Harmony-API container 재부팅시 자동 실행(Raspberry Pie)

간단한 설치 및 실행과정을 위해서 여러 Docker 명령어를 안쓰고
바로 실행 확인 하도록 설치 과정을 포스팅하였다.

Logitech Harmony 기기별 컨트롤을 위한 SmartApp~~~

하지만 필요로 하신 분들도 있고, 나도 우선 ‘동작은 하니깐’ 하면서
현상태에 안주해버렸다는 것을 깨닫고 조사를 시작했다.

알아보니 한 방법은 docker 명령어를 부팅시 실행하는
init script 부분에 명령어를 넣는 방법이 있을 것이고,
init 보다 더 사용하기 좋고 많은 기능을 제공한다는
systemd를 통해서 service 등록하는 방법이 있는 것 같다.

깔끔하게 systemd를 통해서 docker container를 자동 start 하도록 해보자.

1. 기존 stop 되어 있는 container들 정리
우선 기존 실행방법을 통해서 Harmony-API를 실행하였다면, container들이 많이 남아 있을 것이다.
아래 명령어를 통해서, stop되어 있는 container들을 삭제 하고 시작하자.
(혹 기존 docker 사용자분들은 각자 관리하고 있는 container가 삭제 되지 않도록 조심하세요)

# docker ps --all
현재 등록되어 있는(start/stop) 모든 container 리스트를 확인

# docker rm $(docker ps -a -q)
Stop되어 있는 모든 container들을 삭제

 

# docker ps --all
지워졌는지 container 리스트를 확인

 

2. 이름 지정하여 ‘Harmony-API’ container 생성
이제부터는 하나의 container 만 생성하고 start/stop으로 관리 하기 위해서
이전에 Harmony-API를 실행하던 명령어도 변경이 필요하다.
기존에는 container의 이름 지정없이 매번 자동할당되어 실행되게 하였지만,
이젠 이름을 부여해서 해당 container를 재부팅시에 다시 시작하도록 변경 할 것이다.

– 이전 방식
# docker run -ti --net=host --name harmony-api turlvo/harmony-api:latest /home/harmony-api/harmony-api/script/server

– Container 이름 지정 방식
harmony-api 라는 이름으로 container를 생성하는 것이고,
재부팅이나 stop 명령으로 container가 stop 되어도
다시 정해 놓은 harmony-api라는 이름으로 다시 start 시키도록 하는데 사용 될 것이다.
# docker run -ti --net=host --name harmony-api turlvo/harmony-api:latest /home/harmony-api/harmony-api/script/server
우선 ‘harmony-api’라는 이름으로 container를 생성시키고 Ctrl+C로 바로 종료 시키자.

# docker ps --all
그리고 다시 container 리스트를 확인 해보면, ‘harmony-api’ 이름을 가진 container가 생성 및 stop 되어있음

 

3. container 자동 실행
# cd /etc/systemd/system/
# vi [원하는 service name].service

[Unit]
Description=Harmony-API container
Requires=docker.service
After=docker.service 

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a harmony-api
ExecStop=/usr/bin/docker stop -t 2 harmony-api

 

[Install]
WantedBy=multi-user.target

# systemctl enable [원하는 service name].service
systemctl enable 명령어를 통해 service 파일을 systemd에 등록

4. container auto-run service 등록 확인 후 재부팅
# systemctl is-enabled [원하는 service name].service

 

# reboot
5. 재부팅 후 container auto-run 동작 확인
# docker ps

이것으로 Harmony-API service 등록을 통한 자동실행 포스팅 종료.

3 thoughts on “Harmony-API container 재부팅시 자동 실행(Raspberry Pie)”

댓글 남기기