개요
본 문서는 Dockerfile, docker-compose.yml, 도커 실행 명령 관련하여
- 자주 사용하는
- 특정 기능을 위해 필요한
- 자주 안쓰지만 필요한
기능을 위한 명령어 등을 정리한 문서이다.
이 문서의 경우 wait 기능을 위해 2.1 버전을 이용했는데 보통은 3점대 쓴다.
Docker Compose
기본적으로 이미지는 개별 Dockerfile로 생성하는 게 사용하기 편하다.
Dockerfile의 volume, device 같은 연결 명령은 compose에서도 선언 가능하다.
mongodb, nginx 같은 이미지가 공개된 경우
version: '2.1'
services:
mongodb:
image: mongo:4.0
container_name: local_service_db
restart: always
expose:
- 27017
ports:
- 27017:27017
tty: true
volumes:
- ./mongodb:/data/db
environment:
- MONGO_INITDB_ROOT_USERNAME=*****
- MONGO_INITDB_ROOT_PASSWORD=********
- MONGO_INITDB_DATABASE=local_service_db
nginx_proxy:
image: nginx:1.21.5-alpine
container_name: nginx_proxy
ports:
- 80:80
volumes:
- ./proxy/nginx.conf:/etc/nginx/nginx.conf
networks:
- dk_net
FastAPI 기반 API 서버에서 자주 사용하는 option
docker_image_name:
image: registry.gitlab.com/{registry location}/{image name}:{tag}
container_name: docker_container_name
expose:
- 7000
ports:
- 7000:7000
restart: unless-stopped
# for simulatanous container operation
tty: true
volumes:
- ./app:/usr/local.////////
- ./config/config.ini:/db_api/config.ini
networks:
- docker_network_name
expose, ports : 개방 포트 지정 및 컨테이너 내부 포트와 시스템 포트 연결 || {내부}:{외부}
restart : 컨테이너 기능 장애 시 재시동
devices : 컨테이너의 device와 linux serial device 연결 || {내부}:{외부}
tty : 다중 컨테이너 이용을 위한 설정
networks : 컨테이너가 엮일 도커네트워크 선택
volumes : 컨테이너 내부 파일과 외부 파일 || {내부}:{외부}
expose:
- 7000
ports:
- 7000:7000
restart: unless-stopped
devices:
- "/dev/ttyS1:/dev/ttyS1"
tty: true
networks:
- docker_network_name
volumes:
- ./app:/usr/local.////////
- ./config/config.ini:/db_api/config.ini
다른 컨테이너 wait
api 서버와 같이 먼저 무언가가 구동되어야 정상적으로 올라올 수 있는 컨테이너의 경우 지정한 컨테이너 기능이 먼저 기능하는 것을 확인하고 컨테이너를 올린다.
아래 예시의 경우 target api가 9000번 포트에서 작동하는 것을 보고 main.py를 실행한다.
docker_image_name:
image: registry.gitlab.com/{registry location}/{image name}:{tag}
container_name: docker_container_name
volumes:
- ./app:/usr/local.////////
- ./config/config.ini:/client/config.ini
depends_on:
{target_api}:
condition: service_started
command: sh -c "/wait && python3 -u main.py"
environment:
- WAIT_HOSTS={target_api}:{port}
- WAIT_HOSTS_TIMEOUT=300
- WAIT_SLEEP_INTERVAL=10
- WAIT_HOSTS_CONNECT_TIMEOUT=30
networks:
- drimaes_net
networks
docker network create {network_name} -d {driver} 으로 선제적 네트워크 생성 필요
컨테이너 간 연결을 위한 docker network 지정
networks:
docker_network_name:
driver: bridge
external: true
'Docker > Docker' 카테고리의 다른 글
도커 이미지 tar 파일 생성 (0) | 2024.02.08 |
---|---|
Docker Hub 사용 (0) | 2024.02.07 |
Docker Container 내에서 내/외부 IP 사용 (0) | 2023.09.26 |
Dockerfile 작성 (0) | 2023.09.14 |
댓글