개발 환경에서 사용할 database 를 docker-compose.yml 로 관리할 수 있다.
version: '3.8' # docker-compose 의 3.8 버전을 사용한다는 믜미
services:
db:
image: mysql:8.0 # mysql 이미지 8.0 버전을 사용한다는 의미다.
container_name: local-mysql # 컨테이너 이름
restart: always #
environment:
MYSQL_DATABASE: localdb
MYSQL_USER: ${LOCAL_USERNAME}
MYSQL_PASSWORD: ${LOCAL_PASSWORD}
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
env_file:
- env.properties
volumes:
mysql-data:
image: 어떤 docker 이미지를 사용하는지를 나타내는 것
container_name: 내가 지정하는 해당 컨테이너의 이름
restart: 플랫폼이 컨테이너
linux 서버에 docker를 설치하고 실행하면 docker daemon을 stop 하거나 종료할 일이 거의 없지만 만약, local PC에서 docker desktop을 사용한다면 pc를 재부팅할 때마다 docker daemon을 종료할 경우도 생긴다.
이러한 경우 다시 docker daemon을 재시작하는 경우 내부에 docker container의 start 관련 동작을 설정할 수 있다.
Docker 는 다양한 restart 정책을 제공하는데, restart 옵션을 통해 exit 하거나 Docker Daemon 이 재실행될 경우, 자동으로 컨테이너를 restart 할 수 있다.
Docker 는 restart 옵션을 사용해서 process manager 로 컨테이너를 실행하는 것을 지양할 것을 권장하고 있다.
항상 로컬 PC 를 재실행하는 경우, 컨테이너를 재실행하는 번거로움이 있었는데, restart : always 옵션을 사용하면, Daemon 이 뜰때마다 자동으로 컨테이너를 실행시킬 수 있다.no: 어떤 경우에도 종료된 컨테이너를 재실행하지 않는다.
always: container 제거되지 않는한, 컨테이너가 항상 재실행된다.
on-failure: 컨테이너가 error인 exit code 를 내뱉고 중지된 경우에 항상 재실행된다.
unless-stopped: 종료 코드와 관계없이 컨테이너를 다시 시작하지만, 서비스가 중지되거나 제거되면 다시 시작을 중단한다.
docker restart optionsrestart defines the policy that the platform applies on container termination.
댓글