브렌쏭의 Veritas_Garage

[Docker-Compose] Advanced Options 본문

[Project_하다]/[Project_공부]

[Docker-Compose] Advanced Options

브렌쏭 2024. 8. 7. 10:21

로컬 작업은 빡세다니까

setup, init Options in compose file

  • setup and init options in compose file
    • setup option: run before the service starts
    • init option: run before the service starts, but only once
services:
  web:
    image: nginx
    setup: |
      echo "Setting up web service"
    init: |
      echo "Initializing web service"
  • docker-compose up 실행시, setupinit이 실행됨
    • setup은 서비스 시작 전에 실행
    • init은 서비스 시작 전에 한 번만 실행
  • docker-compose up --no-setup 옵션을 사용하면, setupinit을 실행하지 않음
  • docker-compose up --no-init 옵션을 사용하면, init만 실행하지 않음

 

setupinitdocker-compose up 실행시에만 실행됨

  • docker-compose up 실행시에만 실행되는 명령어를 사용할 때 유용함
  • 초기 설정이나 초기화 작업을 할 때 사용

to use .env file in docker-compose

  • .env 파일을 사용하는 방법
    • docker-compose.yml 파일에서 환경 변수를 사용할 때, .env 파일을 사용할 수 있음
    • .env 파일에 환경 변수를 저장하고, docker-compose.yml 파일에서 사용
# .env
MY_ENV=hello
# docker-compose.yml
services:
  web:
    image: nginx
    environment:
      - MY_ENV=${MY_ENV}
  • 따로 환경 변수를 설정하지 않아도, .env 파일에 저장된 환경 변수를 사용할 수 있음
    • 따로 .env 파일의 경로를 지정할 필요가 없음

/var/run/docker.sock

  • /var/run/docker.sock : Docker daemon socket
    • Docker daemon과 통신할 때 사용하는 소켓 파일
    • Docker daemon에 명령을 전달할 때 사용
      • 보통 Docker CLI를 사용하여 Docker daemon에 명령을 전달
services:
  web:
    image: nginx
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  • docker-compose.yml 파일에서 /var/run/docker.sock을 사용할 때, Docker daemon에 접근할 수 있는 권한이 있는 사용자만 사용할 수 있음
    • root 사용자만 접근 가능
    • root 사용자가 아닌 경우, Permission denied 에러 발생

docker-compose.yml 파일에서 /var/run/docker.sock을 사용할 때, 주의해야 함

Docker Compose Network

  • Docker Compose Network
    • Docker Compose로 생성된 컨테이너들은 기본적으로 동일한 네트워크에 속함
networks:
  my-network:
    driver: bridge

Bridge Network

  • Bridge Network: 기본적으로 생성되는 네트워크
    • 컨테이너들이 동일한 네트워크에 속함
    • 컨테이너들은 서로 통신 가능

Docker Compose Volume

  • Docker Compose Volume
    • Docker Compose로 생성된 컨테이너들은 기본적으로 동일한 볼륨을 공유

Directory Volume vs Named Volume

  • Directory Volume: 호스트 디렉토리를 볼륨으로 사용
    • 호스트 디렉토리를 볼륨으로 사용
  • Named Volume: 볼륨 이름을 사용
    • 볼륨 이름을 사용하여 볼륨을 생성
    • 볼륨 이름을 사용하여 컨테이너에서 볼륨을 사용
  • docker-compose.yml 파일에서 볼륨을 사용할 때, directory volumenamed volume을 사용할 수 있음
services:
  web:
    image: nginx
    volumes:
      - /path/to/host/directory:/path/to/container/directory
      - volume-name:/path/to/container/directory
Comments