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

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

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

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Docker

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

Q&A

解決済

1回答

3765閲覧

docker-compose.ymlのcommandを実行したい

ruuusaamarki

総合スコア468

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Docker

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

0グッド

2クリップ

投稿2019/07/22 11:04

前提・実現したいこと

docker-compose.ymlのcommandを実行したいです。

発生している問題

docker-compose up はdoneとなりますが
psするとwordpressコンテナが
restartingループされます。

docker-compose.yml

docker

1 2version: "2" 3services: 4 mysql: 5 image: mysql:5.7 6 environment: 7 MYSQL_ROOT_PASSWORD: root 8 restart: always 9 logging: 10 options: 11 max-size: 5m 12 max-file: "10" 13 14 wordpressimage: 15 image: wordpress 16 command: /bin/sh -c "touch /var/www/html/test.txt" 17 environment: 18 VIRTUAL_HOST: example.com 19 WORDPRESS_DB_PASSWORD: root 20 CERT_NAME: default 21 depends_on: 22 - mysql 23 restart: always 24 tty: true 25 logging: 26 options: 27 max-size: 5m 28 max-file: "10" 29 30networks: 31 default: 32 external: 33 name: shared 34

試したこと

ymlファイルを変更してみましたがrestartがループされます。

change.yml

1 2command: /bin/sh -c "touch /var/www/html/test.txt" 34command: touch /var/www/html/test.txt 5

確認したこと

wordpressコンテナのlinuxディストリビューションはdebianでした。

cat.sh

1 2$ cat /etc/os-release 3PRETTY_NAME="Debian GNU/Linux 9 (stretch)" 4NAME="Debian GNU/Linux" 5VERSION_ID="9" 6VERSION="9 (stretch)" 7ID=debian 8HOME_URL="https://www.debian.org/" 9SUPPORT_URL="https://www.debian.org/support" 10BUG_REPORT_URL="https://bugs.debian.org/" 11

### 質問内容
commandを指定する際に気をつけること。
確認すべき箇所、テストすべきことなどご教授いただけましたら幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

docker-compose.yml の command ディレクティブの使用方法を誤解しています。

command で指定するのは、Dockerfile 内のCMDを上書きするものです。
https://docs.docker.com/compose/compose-file/#command

おそらく、WordPressを提供するサービスが起動せず、ただ test.txt をtouchするだけして終了してしまうので、コンテナがうまく起動しないものと推測しています。

Dockerfile内のCMDディレクティブの記載に依存するかと思いますが、その内容をコピーし、以下のような感じにしてみてはいかがでしょうか。

yml

1command: touch /var/www/html/test.txt && CMDの内容

投稿2019/07/22 12:04

kazto

総合スコア7196

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

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

ruuusaamarki

2019/07/23 10:26

ご回答ありがとうございます。 >Dockerfile 内のCMDを上書き Dockerfileがあることが前提でimageのみの場合は適用されないということなんでしょうかね。 この辺りの認識がよくわかっておりませんので助かりました。 docker-compose.ymlからDockerfileを呼び出すというやり方もありなんですね! 少し邪道なのかなと勝手にイメージしておりました。 Dockerfileで組み立ててみます! (認識に間違いなどありましたら突っ込んでいただけたら嬉しいです。)
kazto

2019/07/23 11:05

自分も理解の浅いとこありました。Dockerfileは作ってなくて、composeから直接イメージ起動してるんですね。 commandディレクティブの仕様とうまく起動しない理由については前述の通りなので、間に処理はさむにはどうするのがスマートか…
ruuusaamarki

2019/07/23 11:12

すみません、自分もよくわかっていないです。 検索するとDockerfileをdocker-compose.ymlから呼び出す方法も出てくるので 自分もローカル環境で使っていました。 今回はcommandディレクティブの仕様がはっきりしたことが大きかったです。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問