私は最近ドッカーにウェブサービスを移植しています。タイトルで述べたように、私はdocker run -ditを使って実行すると、サービスはバックグラウンドで実行されますが、docker-compose.ymlを使用するとサービスが終了するという奇妙なシナリオに遭遇しています。イメージはdocker run -ditを使用して正常に動作しますが、ドッカースタックを使用して終了します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]";
あなたが見ることができるように、私はちょうどよこのシェルスクリプトでuwsgiとnginxをここで起動します。最後の行(exec)は、スクリプトにパラメータを受け入れ、実行させ続けるだけです。次に、私はこれを使用してこれを実行します。
docker run -dit -p 8080:8080 --name=web_server webserver /bin/bash
前述のように、サービスは正常に実行され、Webサービスにアクセスできます。
今、私はこれをdocker-compose.ymlを使って展開しようとしましたが、サービスは終了/シャットダウンし続けます。私はログを取得しようとしましたが、私は成功しません。 のdocker ps -aは、1秒間または2回(または3回)実行されてから終了します。
は、ここに私のドッキングウィンドウ-compose.ymlです: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
エントリポイントのエントリがちょうどstart-service.shスクリプトは、そのパラメータとして/ binに/ bashをして実行されることを確認することです、サービスを実行し続けるしかし再び、サービスは停止します。
これらのコマンドからログを提供できますか? 'docker service ls''ドッカーサービスログ ' –
yamenk
@yamenk - 返事をありがとう。私はすでにそれらのコマンドをしたが、結果は得られなかった。 stdin/terminalも現在の作業ディレクトリのファイルでもありません – jaysonpryde