본문 바로가기

DataEnginner/Docker

Docker-compose

이 글은 우분투 환경에서 작성되었습니다.


현재 내가 구동 중인 docker-compose.yml 파일

  • 어렵게 생각했었는데 docker run 할때 요소들이 녹아 든것 뿐 어렵지않다.
  • 정정 어려운듯 싶다. 다른 docker-compose 파일에 이전 docker images를 적용할때 줄이 맞지 않아 문제가 발생하기도 했다. 안되면 꼭 줄확인 (특히, 복붙시에)
  • 그리고 $ docker-compose down 후 docker-compose 파일을 고쳐봐야 아래입력한 설정값들은 적용안되므로 $ docker ps 로 확인 cp $ docker rm -f [NAMES or CONTAINER ID]를 입력한다.
version: "3.7" # 파일 규격 버전
# docker-compose 버전으로 버전3부터는 links 옵션을 넣지않아도 docker-compose내의 Container는 연결된다.
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의 ( 컴포즈에서 컨테이너 : 서비스 )



  db: # 서비스 명
    image: mysql:8.0.17 # 사용할 이미지
    restart: always
    command: --lower_case_table_names=1
    container_name: db # 컨테이너 이름 설정
    ports:
      - "3306:3306" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)  #<- 컨테이너 내부는 무조건 3306 외부는 로컬을 뜻한다. (or 클라우드환경)
    environment: # -e 옵션
      - MYSQL_DATABASE=testdb
      - MYSQL_ROOT_PASSWORD=root # MYSQL 패스워드 설정 옵션
      - TZ=Asia/Seoul

    command: # 명령어 실행
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - ~/workspace/pyspark/db:/var/lib/mysql # -v 옵션 (다렉토리 마운트 설정)



  py_spark:
    image : jo1013/pyspark:0.05
    restart : always
    container_name : py_spark
    ports :
      - "8888:8888"
      - "8000:8000"
    volumes:
      - ~/workspace:/home


'containername' exited with code 0 이 나올 경우

해당 컨테이너에 아래와같은 부분을 추가해준다.

stdin_open: true #docker run 에서 -i를 의미
tty: true  #docker run 에서 -t를 의미

  • docker-compose start // 정지한 컨테이너를 재개
  • docker-compose start mysql // mysql 컨테이너만 재개
  • docker-compose restart // 이미 실행 중인 컨테이너 다시 시작
  • docker-compose restart redis // 이미 실행중인 redis 재시작
  • docker-compose stop // gracefully stop함.
  • docker-compose stop wordpress docker-compose down // stop 뿐만 아니라 컨테이너 삭제까지
  • docker-compose logs docker-compose logs -f // 로그 watching
  • docker-compose ps // 컨테이너 목록
  • docker-compose exec [컨테이너] [명령어] docker-compose exec wordpress bash // wordpress에서 bash 명령어 실행
  • docker-compose build // build 부분에 정의된 대로 빌드
  • docker-compose build wordpress // wordpess 컨테이너만 빌드
  • docker-compose run [service] [command] // 이미 docker-compose 가동 중인 것과 별개로 하나 더 올릴 때
  • docker-compose run nginx bash

출처 :https://velog.io/@noyo0123/%EB%8F%84%EC%BB%A4%EB%A1%9C-mysql-%EB%9D%84%EC%9B%8C%EB%B3%B4%EC%9E%90

출처 :https://www.44bits.io/ko/post/almost-perfect-development-environment-with-docker-and-docker-compose

출처 : https://darrengwon.tistory.com/793