programing tip

시스템 시작시 docker-compose up -d를 실행하는 방법은 무엇입니까?

itbloger 2020. 10. 28. 07:50
반응형

시스템 시작시 docker-compose up -d를 실행하는 방법은 무엇입니까?


컨테이너가 시작 지점에서 자동 시작되도록하기 위해 다음 명령을 추가하려고했습니다.

cd directory_has_docker-compose.yml && docker-compose up -d /etc/rc.local.

하지만 컴퓨터를 재부팅하면 컨테이너가 작동하지 않습니다.

docker-compose up -d시스템 시작시 어떻게 실행 합니까?


crontab또는 더 이상 사용되지 않는 /etc/rc.local파일 을 사용할 때 sleep 10시스템 서비스를 사용할 수 있는지 확인하기 위해 지연 (예 : 시스템에 따라 다름)이 필요합니다. 일반적으로 systemd(또는 upstart)은 시스템이 부팅 될 때 시작할 서비스를 관리하는 데 사용됩니다. 이와 유사한 구성을 사용해 볼 수 있습니다.

# /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

또는 -d플래그 없이 실행하려는 경우 :

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

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

[Service]
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitIntervalSec=60
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

WorkingDirectory고정 된 프로젝트 경로로 매개 변수를 변경합니다 . 서비스가 자동으로 시작되도록합니다.

systemctl enable docker-compose-app

다음을 추가 할 수 있어야합니다.

restart: always 

docker-compose.yml 파일에서 다시 시작하려는 모든 서비스에


시도했지만 restart: always일부 컨테이너 (예 : php-fpm)에서 작동하지만 일부 컨테이너 (예 : nginx)가 재부팅 후에도 여전히 다시 시작되지 않는 문제에 직면했습니다.

문제를 해결했습니다.

crontab -e

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

docker.service시스템 시작시 활성화 된 경우

$ sudo systemctl enable docker

당신의 서비스 docker-compose.yml

restart: always

아래 명령을 한 번만 실행하면 시스템을 재부팅하면 모든 서비스가 실행됩니다.

docker-compose up -d

다시 시작 사용 : 항상 도커 작성 파일에서.

Docker-compose up -d이미지에서 컨테이너를 다시 시작합니다. docker-compose start중지 된 컨테이너를 시작하는 데 사용 되며 이미지에서 새 컨테이너를 시작하지 않습니다.

nginx:   
    restart: always   
    image: nginx   
    ports:
      - "80:80"
      - "443:443"   links:
      - other_container:other_container

또한 Docker 파일에 코드를 작성하여 다른 컨테이너의 종속성이있는 경우 먼저 생성되도록 할 수 있습니다.


As an addition to user39544's answer, one more type of syntax for crontab -e:

@reboot sleep 60 && /usr/local/bin/docker-compose -f /path_to_your_project/docker-compose.yml up -d

참고URL : https://stackoverflow.com/questions/43671482/how-to-run-docker-compose-up-d-at-system-start-up

반응형