Podman-compose 시스템 자동시작 » History » Version 1
상혁 손, 2025-10-12 16:33
| 1 | 1 | 상혁 손 | # Podman-compose 서비스 등록 |
|---|---|---|---|
| 2 | |||
| 3 | ssd@SSD-SERVER:/work/podman/postgresql-server$ cat ~/.config/systemd/user/my-server.service |
||
| 4 | `[Unit]` |
||
| 5 | `Description=Podman Compose service for PostgreSQL Project` |
||
| 6 | `#Requires=network-online.target` |
||
| 7 | `#After=network-online.target` |
||
| 8 | `# Podman 소켓이 준비될 때까지 기다립니다.` |
||
| 9 | `Wants=podman.socket` |
||
| 10 | `After=podman.socket` |
||
| 11 | |||
| 12 | `[Service]` |
||
| 13 | `Type=oneshot` |
||
| 14 | `RemainAfterExit=true` |
||
| 15 | |||
| 16 | `# 프로젝트 폴더를 작업 디렉토리로 지정합니다.` |
||
| 17 | `WorkingDirectory=/work/podman/postgresql-server` |
||
| 18 | |||
| 19 | `# 서비스 시작 명령어 (백그라운드 실행)` |
||
| 20 | |||
| 21 | # 필요하다면 리소스가 준비될때까지 sleep하도록 대기 |
||
| 22 | |||
| 23 | ExecStartPre=/bin/sleep 30 |
||
| 24 | |||
| 25 | #/usr/bin/podman-compose가 있는지 /usr/local/bin/podman-compose가 있는지 정확히 지정 필요 |
||
| 26 | `ExecStart=/usr/bin/podman-compose up -d` |
||
| 27 | |||
| 28 | `# 서비스 중지 명령어` |
||
| 29 | `ExecStop=/usr/bin/podman-compose down` |
||
| 30 | |||
| 31 | `# 실패 시 10초 후 재시작` |
||
| 32 | |||
| 33 | #gpu의 경우 언제 리소스가 활성화 될지 모르기 때문에 failure에 대비해서 30초로 설정 |
||
| 34 | `#Restart=on-failure` |
||
| 35 | `#RestartSec=10` |
||
| 36 | |||
| 37 | `[Install]` |
||
| 38 | `WantedBy=default.target` |
||
| 39 | |||
| 40 | 위와 같은 형태로 서비스를 등록하면 됨 |
||
| 41 | |||
| 42 | 시스템 재시작시에 자동으로 시작하게 하는방법은 linger를 통해서 |
||
| 43 | |||
| 44 | `sudo loginctl enable-linger $(whoami)` |
||
| 45 | `loginctl show-user $(whoami) | grep Linger` |
||
| 46 | |||
| 47 | Linger=yes 가 나오면 자동 재시작이 완성됨 |