質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

4406閲覧

Dockerfile CMDが実行されない

wp-h

総合スコア135

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2018/08/11 10:15

編集2018/08/11 10:30

Dockerfileの記述についての質問になります。

◼️困っている事
ENTRYPOINTの箇所(もしくはCMD)の箇所を認識できないためdocker runに失敗する
※docker runコマンドではエラーにならないが、docker psのステータスがExitedになりサービスが起動しない
以下のようなDokcerfileがあります。

#Dockerfile FROM mongo:latest ~割愛~ COPY startUp.sh /tmp/startUp.sh RUN chmod 777 /tmp/startUp.sh EXPOSE 80 9000 27071 ENTRYPOINT ["/tmp/startUp.sh"]

このDockerfileでbuildは出来るのですがdocker runを行った際にstatusがExitedとなり起動してくれません。
docker runをした際にENTRYPOINTの箇所でエラーになっているところまでは絞り込めました。
何か他に特別な記述が必要なのでしょうか?どなたかご存知の方よろしくお願いします。

startUp.shの内容

#!/bin/bash echo '123' > /tmp/test.txt

◼️環境
ホストOSはOS X
Dockerのimageはmongodbをdockerhubから指定
aptでnginx,phpをインストールしています。

◼️試した事
docker buildとrun時のコマンド

$docker build -t test-nginx:1.0 . $docker run -d test-nginx:1.0

ENTRYPOINT/CMDで以下の記述だと、docker runに成功する

ENTRYPOINT ["mongod"] もしくは ENTRYPOINT ["nginx", "-g", "daemon off;"]

run時にサービスの立ち上げを行うために複数のコマンドを実行させるつもりです。
CMDに複数コマンドが指定できないため、それならばシェルで起動しようかと考えていたのですが、シェルスクリプトはCMDで許可されていないのでしょうか?
./bashrcで良いかなとも思いましたがdocker run時のオプションに関係なく一律同じコマンドを読み込んで欲しいので。
docker build => docker run時にnginx,php-fpm,mongodをそれぞれ実行するために試行錯誤してこの方法を取ることにしましたが、どなたか解決できる方がいればお願いします...。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

startUp.sh が実行後、すぐに終了するので、コンテナ自体が終了しているのだと思います。
mongod, nginx のように、フォアグラウンドで起動し続けるプロセスが必要です。
複数のプロセスを実行するのであれば、最後のプロセスだけフォアグラウンドで実行するようにするといいと思います。

投稿2018/08/12 15:00

編集2018/08/12 15:03
TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

恐らくこのようにすると動くと思います。

ENTRYPOINT ["sh", "/tmp/startUp.sh"]

もしそれでもダメならば

$ docker logs {コンテナID}

を見ると原因がわかるかもしれません。

投稿2018/08/11 11:23

okamok

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wp-h

2018/08/11 11:50

なるほどそうかと思い,ENTRYPOINT ["source", "/tmp/startUp.sh"]も試してみましたが、同じ結果でした。 docker logは何も表示なしでした。。。 (他の正常起動コンテナにはinfoレベルの情報があがることを確認しています。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問