programing

시스템 시동 시 도커 컴포지트 업-데이터를 실행하는 방법은?

iphone6s 2023. 9. 24. 12:32
반응형

시스템 시동 시 도커 컴포지트 업-데이터를 실행하는 방법은?

시작 지점에서 컨테이너를 자동으로 시작하도록 하려면 다음 명령을 추가하려고 했습니다.

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
StartLimitIntervalSec=60

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

[Install]
WantedBy=multi-user.target

변경합니다.WorkingDirectory도커화된 프로젝트 경로로 파라미터를 지정합니다.서비스를 자동으로 시작할 수 있도록 합니다.

systemctl enable docker-compose-app

당신의docker.service시스템 시작 시 활성화됨

$ sudo systemctl enable docker

그리고 당신의 서비스는docker-compose.yml가지다

restart: always

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

docker-compose up -d

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

restart: always 

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

참조: https://github.com/compose-spec/compose-spec/blob/master/spec.md#restart

restart 사용: 항상 사용자의docker-compose.yaml파일.

Docker-compose up -d이미지에서 컨테이너를 다시 시작합니다. 사용합니다.docker-compose start정지된 컨테이너를 시작하기 위해 이미지에서 새 컨테이너를 시작하지 않습니다.

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

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

나는 노력했다.restart: always, 일부 컨테이너(php-fpm 등)에서 작동하지만 일부 컨테이너(nginx 등)는 재부팅 후에도 다시 시작되지 않는 문제에 직면했습니다.

문제를 해결했습니다.

crontab -e

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

도커- compose.yml

에 추가로user39544의 대답, 또 하나의 유형의 구문은crontab -e:

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

다시 시작 정책을 사용하기 위해 도커는 다음 옵션을 제공합니다.

아니오: 컨테이너가 자동으로 다시 시작되지 않습니다.

온 failure[:max-retries]:종료 코드가 0이 아닌 상태로 종료되면 컨테이너를 다시 시작하고, 도커 데몬이 컨테이너를 다시 시작하도록 최대 시도 횟수를 제공합니다.

always: 용기가 멈추면 항상 다시 시작합니다.

stopped가 아닌 경우:컨테이너가 임의로 정지되거나 도커 데몬에 의해 정지되지 않는 한 항상 컨테이너를 다시 시작합니다.

나를 위해 일했습니다(약간 변형):

crontab -e를 선택한 다음 아직 선택하지 않은 경우 nano editor를 선택합니다.파일 하단에 @reboot에서 &:로 한 줄을 추가합니다.

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

과 "(docker-composition)"의를 기준으로 .라는 공통 위치에 기반하여
-ker rxng -ker"더입니다. to 2령 "cd to 2 cd to"합니다를 합니다.
실제 search xng-docker folder" 를 실행하고 컨테이너 시작 "composeer-dock up-d" 명령을 실행합니다입니다.

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

반응형