부팅시 docker-compose를 실행하는 방법은 무엇입니까?


20

이것은 Docker를 실행하는 Ubuntu 14.04 LTS VM respawn에 있으며 문제의 원인이라고 생각하지만 이상적인 솔루션을 확신하지 못합니다.

현재 시작 스크립트 ( cat /etc/init/dockersuitecrm.conf)

description "Start docker containers"
author "Batman"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
end script

이 '작동' myapp은 살아 있고 반응이 있지만로 /sbin/init모니터링 할 때 모든 CPU를 차지합니다 htop. upstart ( sudo rm /etc/init/dockersuitecrm.conf) 에서 항목을 제거 하고 수동으로 SSH를 실행하여 실행 docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start하면 100 % 문제로 CPU가 표시되지 않으며 이전과 같이 myapp다시 활성화되고 응답합니다.

따라서 위의 docker-compose를 시작하는 방법이 잘못되었다고 생각합니다. docker-compose수동 시작 없이 항상 시작하는 올바른 방법은 무엇입니까 ?

편집 : 중요하지 않지만 /usr/bin/myapp -> /home/batman/dockerapps/myapp상징적 인 링크로 사용해야 합니다.


해결책은 아니지만 해결 방법으로 respawn스크립트 의 명령 없이이를 실행할 수 있습니다.
DeepSpace101

같은 질문이지만 serverfault.com/questions/615820/…을 보았습니다 . 마술은를 사용하는 것 docker-compose start입니다.
Mark Lopez

비슷한 구성이 있지만 script블록을 사용하지 않습니다 . 어쩌면 그것은 문제의 일부입니까? 나는이 chdir /usr/bin/myapp/다음 행에 exec docker-compose up대신.
jmreicha

백그라운드에서 docker-compose를 실행하고 싶지 않습니까? 즉,docker-compose up -d
KCD

다시 시작 : 항상 컨테이너 사양
Lu32

답변:


9

시간 간격을 사용하는 대신 crontab을 사용하면됩니다.

이 스크립트를 시작해야하는 사용자로 로그인하고 명령을 입력하십시오.

crontab -e

그리고 입력

@reboot /better/enter/fullpath/here/docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start

시스템을 재부팅하고 작동하는지 확인하십시오. upstart보다 한 가지 장점이 있습니다. 비록 그것이 조금 후에 시작 되더라도 네트워킹 등과 같은 의존성에 대해 이미 걱정할 필요가 없습니다.


재부팅이 어떻게 이런 식으로 실행되는지 알 수 있습니까?
저스틴 스미스

1
미안하지만 이것은 좋은 대답이 아닙니다. 때때로 작동하지만 다른 도커 요구 사항 전에 cron 이로 드 될 수 있으므로 경쟁 조건이 발생합니다.
Otheus

2

Docker Compose 정의 버전 2를 사용한다고 가정하면 docker-compose.yml다음을 수행 할 수 있습니다.

restart: always그렇게 정의 :

version: '2'
services:
  web:
    image: nginx
    restart: always

참조 : https://docs.docker.com/compose/compose-file/compose-file-v2/


1
문제는 도커 사이트에서 대답하지 않는 것입니다. "도커 작성을 시작하는 올바른 방법은 항상 수동 개입없이 실행되고 있습니까?"
Otheus

0

Docker가 즉시 준비되지 않음 스크립트를 너무 일찍 실행하면 아무 일도 일어나지 않습니다. Docker는 준비가 완료되면 docker ps 명령에 응답하기 시작하므로 crontab 에서이 트릭을 사용할 수 있습니다.

나노 / etc / crontabs / root

@reboot / usr / bin / docker ps && / usr / bin / docker-compose -f /prod.yml start

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.