출처 : https://stackoverflow.com/questions/43671482/how-to-run-docker-compose-up-d-at-system-start-up


crontab의 @reboot 또는 (옛날 방식) /etc/rc.local 파일을 사용 해도 되지만, 앞에 10초 이상 sleep 을 주지 않으면 실행이 안됩니다.

@reboot (sleep 15s ; cd /myapps ; /usr/local/bin/docker-compose up -d )& 


아래 처럼 system service로 해당 앱을 등록 시켜두면 다른 서비스처럼 자동시작/시작/종료 를 제어할 수 있습니다.

# /etc/systemd/system/docker-compose-app.service

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

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

[Install]
WantedBy=multi-user.target


 WorkingDirectory  변수값은 실제  프로젝트 경로로 변경 해야 합니다. 

부팅시 서비스가 자동 시작하도록 설정 합니다.

systemctl enable docker-compose-app

======

zabbix 예제

# /etc/systemd/system/zbx.service

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

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/root/zabbix-docker
ExecStart=/usr/local/bin/docker-compose -f ./docker-compose_v3_centos_mysql_latest.yaml up -d
ExecStop=/usr/local/bin/docker-compose -f ./docker-compose_v3_centos_mysql_latest.yaml down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

서비스가 자동 시작 설정

systemctl enable zbx

서비스 시작 

systemctl start zbx

서비스 종료

systemctl stop zbx


+ Recent posts