我最近已經將一個web服務移植到docker。正如標題中提到的,我遇到了一個奇怪的場景,當我使用docker run -dit運行它時,服務在後臺運行,但是當我使用docker-compose.yml時,服務退出。圖片使用docker run -dit正常運行,但使用docker stack deploy退出-c
更清晰,我有這個入口點在我Dockerfile:
ENTRYPOINT ["/data/start-service.sh"]
這是start-service.sh的代碼:
#!/bin/bash
/usr/local/bin/uwsgi --emperor=/data/vassals/ --daemonize=/var/log/uwsgi/emperor.log
/etc/init.d/nginx start
exec "[email protected]";
你可以看到,我只是在這個shell腳本中啓動uwsgi和nginx。最後一行(exec)只是讓腳本接受一個參數並保持運行。然後我運行這個使用:
docker run -dit -p 8080:8080 --name=web_server webserver /bin/bash
如上所述,服務運行正常,我可以訪問web服務。
現在,我嘗試使用docker-compose.yml進行部署,但服務仍在退出/關閉。我試圖檢索日誌,但我沒有成功。我可以從中看到docker ps -a運行一秒鐘還是2(或3秒鐘),然後退出。
這裏是我的搬運工,compose.yml:
version: "3"
services:
web_server:
image: webserver
entrypoint:
- /data/start-service.sh
- /bin/bash
ports:
- "8089:8080"
deploy:
resources:
limits:
cpus: "0.1"
memory: 2048M
restart_policy:
condition: on-failure
networks:
- webnet
networks:
- webnet
在YML文件入口點條目只是爲了確保start-service.sh腳本將與/斌/ bash作爲它的參數來跑,保持服務正常運行。但同樣,該服務關閉。
你能提供這些命令的日誌嗎? '碼頭服務ls''碼頭服務日誌' –
yamenk
@yamenk - 謝謝你的回覆。我已經完成了這些命令,但是我沒有得到任何結果。既不在stdin/terminal也不在目前的工作目錄中的文件 – jaysonpryde