docker-compose에서 컨테이너를 자동 시작 설정

docker-compose에서 컨테이너를 시스템 시작 시 자동으로 시작하게 하려면, restart 정책을 docker-compose.yml에 명시하면 됩니다. 또한 서버 수준에서 완전한 부팅 자동화를 원할 경우, systemd 서비스로 등록할 수도 있습니다.


1. docker-compose.yml에서 자동 재시작 설정

Compose 파일의 각 서비스에 restart 속성을 추가합니다.

text
version: '3.8'
services:
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: root
restart: unless-stopped

web:
image: nginx:latest
ports:
- "8080:80"
depends_on:
- db
restart: always

선택 가능한 restart 옵션

정책 설명
no 자동 재시작 안 함 (기본값) ​
always 언제나 자동 시작. Docker Desktop 또는 데몬 재시작 시에도 ​
on-failure 에러로 종료될 때만 재시작 ​
unless-stopped 수동으로 stop하지 않는 한 계속 유지. 가장 실용적인 설정 ​

이 설정으로 Docker가 부팅될 때 컨테이너를 자동으로 재기동합니다.


2. systemd 서비스로 docker-compose 전체 자동 실행

Docker Desktop이 아닌 리눅스 서버 환경에서는 systemd 유닛 파일을 만들어 docker-compose를 부팅 시 실행할 수 있습니다.

예시 (/etc/systemd/system/my-compose.service):

text
[Unit]
Description=Docker Compose Application
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/path/to/project
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

활성화 명령:

bash
sudo systemctl daemon-reload
sudo systemctl enable my-compose
sudo systemctl start my-compose

이렇게 하면 부팅 시 자동으로 docker-compose up -d가 실행됩니다.​


3. Docker Desktop 환경 참고

Windows나 macOS의 Docker Desktop에서는 compose 서비스가 Docker Desktop 실행 후 자동으로 컨테이너를 재시작하게 됩니다.
이 경우 Docker Desktop 설정 메뉴에서 “Start Docker Desktop when you log in” 옵션이 켜져 있어야 합니다.

Compose 파일에 restart: unless-stopped 또는 restart: always 속성만 있으면 자동으로 컨테이너가 재기동됩니다.​

docker-compose에서 컨테이너를 자동 시작 설정

Docker Desktop에서 컨테이너를 시작 시 자동으로 시작하게 하려면 컨테이너에 재시작 정책(restart policy)을 설정해야 합니다.

가장 흔한 방법은 컨테이너 생성 시 또는 이미 생성된 컨테이너에 다음 옵션을 사용해 설정하는 것입니다.

  • 컨테이너 생성 시:

    bash
    docker run -d --restart=always --name <컨테이너명> <이미지명>
  • 이미 생성된 컨테이너에 적용 시:

    bash
    docker update --restart=always <컨테이너명 또는 아이디>

–restart 옵션에 설정할 수 있는 값은 다음과 같습니다:

  • no (기본값): 자동재시작 없음

  • on-failure: 오류 발생 시 재시작

  • always: 컨테이너가 중지되면 항상 재시작, Docker 재시작 시도 포함

  • unless-stopped: 수동으로 중지하지 않는 한 항상 재시작

Windows에서 Docker Desktop 사용 시, Docker 엔진 자체가 윈도우 시작 시 자동 실행되어야 하며, Docker Desktop 설정에서도 “시작 시 자동 실행(Start Docker Desktop when you log in)” 옵션이 켜져 있어야 합니다. 이 외에도 Windows 작업 스케줄러에 docker start 명령을 등록하는 방법도 있습니다.

요약하면, Docker Desktop에서 컨테이너 자동 시작하려면 컨테이너에 --restart=always 옵션을 주거나 docker update로 설정한 후, Docker Desktop이 윈도우 시작 시 자동 실행되도록 설정하면 됩니다.​