티스토리 뷰

반응형

Linux에서 시작 또는 재부팅시 docker/docker-compose를 자동으로 실행시켜 주는 방법 중, 이전 방법에서는 rc.local(rc-local)에 실행 스크립트를 삽입하는 방법이 있습니다.

 

그러나 rc.local에서 사용하기 위해서는, 10초 딜레이 등을 추가를 해서 docker 서비스가 실행될 때 까지 기다린 후 스크립트가 실행되게 끔 작성해야 합니다.

 

경우에 따라 rc.local이 비활성화 되어있어서 별도로 활성화 하는 작업이 필요할 수도 있습니다.

 

따라서 systemctl에 서비스를 추가하여 자동으로 실행하게 끔 하는 방법이 더 나을수도 있습니다.

 

이 글에서는 서비스에 등록하여 자동으로 실행 및 systemctl을 통해 관리 가능하도록 하는 방법을 안내합니다.

 

Ubuntu 20.04 LTS 및 CentOS 8에서 테스트 되었습니다.

 

 

먼저, docker-compose-app.service 파일을 생성하고 내용을 추가합니다. (파일명이 서비스 이름이 됩니다. 파일명 변경시 참고하세요. 파일 확장자는 변경 불가)

$ sudo vi /etc/systemd/system/docker-compose-app.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는 실행할 docker-compose.yml 파일이 위치한 디렉토리로 지정합니다.

 

파일을 저장하고, 아래의 명령어로 서비스를 등록합니다.

$ sudo systemctl enable docker-compose-app
Created symlink /etc/systemd/system/multi-user.target.wants/docker-compose-app.service → /etc/systemd/system/docker-compose-app.service.

 

간단하게 모두 완료되었습니다.

 

Linux를 재부팅하여 실행이 잘 되는지 확인하여 마무리합니다.

반응형