iT邦幫忙

2026 iThome 鐵人賽

DAY 30
0

最後一天說說心得與檢討,在客戶提供大禮包後,要求用在A2A系統的磨合過程是一波三折,最後開發上軌道時,也才用了Quadlet的.container、.network這兩類檔案就能滿足專案需求。其它Quadlet類型的檔案反而是為了這次的鐵人賽額外去學,而且發文順序上也出現了本末倒置的情況,昨天發文用Podman Desktop的Podman machine開發Quadlet,應該排在離線安裝Podman之前講,才方便只有筆電的邦友入門,不管作業系統是Mac還是Windows。而我是因為目前A2A專案在進行,就直接用RedHat的VM做研究。

終於結束!灑花!


內容太少,交差不好看。就加個附錄

【附錄:Windows的服務化】
Podman Desktop的Podman machine的作業系統是Fedora CoreOS,支援systemd,但若拿Windows作為系統主機的作業系統,不適合再透過Podman Desktop一層對Podman machine包成Windows服務,而Windows服務是由sc操作,角色等同systemd的systemctl,這部份可參照筆者著作:作業系統的專武

所以是直接對容器包成Windows服務,無法享用Quadlet的generator的好處。
目前較常見把java或容器包成Windows服務套件有三:

  1. WinSW
  2. NSSM (還沒用過)
  3. Apache Commons-Daemon (不推薦)

其中最不推薦第三個,它是Tomcat和JBoss預設的服務包裝套件,筆者在兩個系統遇過,一個是關不掉JBoss服務,另一個服務啟動了,但Spring Boot沒有啟動,後來改成WinSW解決,而AI也推薦用WinSW將容器包裝成服務:
從https://github.com/winsw/winsw/releases 下載WinSW.exe
這個WinSW.exe檔檔名改成a2a-batch.exe,並建一個a2a-batch.xml,如下:

<service>
  <id>a2a-batch</id>
  <name>A2A Batch</name>
  <description>Run a2a-batch Podman container as Windows Service</description>

  <executable>powershell.exe</executable>
  <arguments>-ExecutionPolicy Bypass -File C:\services\a2a-batch\start.ps1</arguments>

  <stopexecutable>powershell.exe</stopexecutable>
  <stoparguments>-ExecutionPolicy Bypass -File C:\services\a2a-batch\stop.ps1</stoparguments>

  <logpath>C:\services\a2a-batch\logs</logpath>
  <logmode>roll</logmode>
</service>

其中ID值就是Windows服務唯一識別值。
位在C:\services\a2a-batch的PowerShell內容如下:
啟動的script,這要確定a2a-batch這個容器已載入podman了。

# start.ps1
podman machine start
podman start a2a-batch

關閉的script

# stop.ps1
podman stop a2a-batch

接著將a2a-batch安裝成Windows服務:

a2a-batch.exe install

啟動:

a2a-batch.exe start

移除服務:

a2a-batch.exe uninstall

而對服務的維運有分CMD、Powershell以及a2a-batch.exe的操作,如下:

CMD(用sc) PowerShell a2a-batch.exe
啟動 sc start a2a-batch Start-Service a2a-batch a2a-batch.exe start
停止 sc stop a2a-batch Stop-Service a2a-batch a2a-batch.exe stop
狀態 sc queryex a2a-batch Get-Service a2a-batch a2a-batch.exe status
移除 sc delete a2a-batch Remove-Service a2a-batch a2a-batch.exe uninstall

上一篇
在Podman Machine玩Podman Quadlet
系列文
Podman Quadlet-容器服務化(在單體系統到微服務之間)30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言