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

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

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

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

nginx

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Docker

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

Q&A

解決済

1回答

7361閲覧

docker-compose up -d でWebサーバーだけが起動しない

asm_t

総合スコア14

docker-compose

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

nginx

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Docker

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

0グッド

0クリップ

投稿2021/06/29 17:02

前提・実現したいこと

Dockerを用いて、開発環境を構築しようとしています。
appコンテナ、dbコンテナ、webコンテナの3つのコンテナを使用したいです。

※AWSのEC2でAmazonLinuxを使用した際、というのを想定した環境を作りたいです。

発生している問題・エラーメッセージ

docker-compose up -dを実行し、docker-compose psで確認すると
=> Exit 1となり、起動しない
=> app、dbのコンテナは立ち上がっている

![イメージ説明

$ docker-compose up -d Creating nayamitter2_db_1 ... done Creating nayamitter2_app_1 ... done Creating nayamitter2_web_1 ... done $ docker ps Name Command State Ports --------------------------------------------------------------------------------- nayamitter2_app_1 bundle exec puma -C config ... Up nayamitter2_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp nayamitter2_web_1 /docker-entrypoint.sh /bin ... Exit 1

該当のソースコード

  • Dockerfile(web用)
FROM nginx:1.19.10 RUN rm -f /etc/nginx/conf.d/* ADD nginx.conf /etc/nginx/conf.d/nayamitter2.conf CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
  • nginx.conf
1 upstream nayamitter2 { 2 server unix:///var//www/nayamitter2/tmp/sockets/puma.sock; 3 } 4 5 server { 6 listen 80; 7 server_name localhost; 8 9 access_log /var/log/nginx/access.log; 10 error_log /var/log/nginx/error.log; 11 12 location ~ ^/assets/ { 13 root /var/www/nayamitter2/public; 14 } 15 16 client_max_body_size 100m; 17 error_page 404 /404.html; 18 error_page 505 502 503 504 /500.html; 19 try_files $uri/index.html $uri @nayamitter2; 20 keepalive_timeout 5; 21 22 location / { 23 proxy_set_header X-Real-IP $remote_addr; 24 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 25 proxy_set_header Host $http_host; 26 proxy_pass http://nayamitter2; 27 } 28 }
  • docker-compose.yml
1 version: '3' 2 services: 3 app: 4 build: 5 context: . 6 command: bundle exec puma -C config/puma.rb 7 8 volumes: 9 - .:/nayamitter2 10 - public-data:/nayamitter2/public 11 - tmp-data:/nayamitter2/tmp 12 - log-data:/nayamitter2/log 13 networks: 14 - nayamitter2-network 15 depends_on: 16 - db 17 18 db: 19 image: mysql:5.7 20 environment: 21 MYSQL_ROOT_PASSWORD: password 22 MYSQL_USER: user 23 MYSQL_PASSWORD: password 24 MYSQL_DATABASE: nayamitter2_development 25 volumes: 26 - db-data:/var/lib/mysql 27 networks: 28 - nayamitter2-network 29 30 web: 31 build: 32 context: containers/nginx 33 volumes: 34 - public-data:/nayamitter2/public 35 - tmp-data:/nayamitter2/tmp 36 ports: 37 - 80:80 38 depends_on: 39 - app 40 networks: 41 - nayamitter2-network 42 43 volumes: 44 public-data: 45 tmp-data: 46 log-data: 47 db-data: 48 49 networks: 50 nayamitter2-network: 51 external: true

試したこと

  • ttyをtrueにする

=> docker runでの-itに相当するものなので、これを付加 => 起動せず

気になること

docker-compose upの結果、webサーバーに関するログは下記の通り返ってきます。
エラーではありませんが、これが原因で起動しないということも考えられますでしょうか?
エラーを読むと/etc/nginx/conf.d/nayamitter2.confの30行目に問題がありそうですが、どうやってファイルの中に入ればいいのか分かりませんでした。
初歩的なことで申し訳ございませんが、ご教示いただけますと幸いです。

web_1 | 2021/06/29 14:11:37 [emerg] 9#9: unexpected end of file, expecting ";" or "}" in /etc/nginx/conf.d/nayamitter2.conf:30 web_1 | nginx: [emerg] unexpected end of file, expecting ";" or "}" in /etc/nginx/conf.d/nayamitter2.conf:30 nayamitter2_web_1 exited with code 1

実行環境

macOs Catalina 10.15.7
Nginx 1.19.10
Rails 6.1.3.2
Ruby 3.0.0p0
docker 20.10.7

Dockerに詳しい方のご助言をいただけますと幸いです。
どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

現在のエラー内容とその原因

今現在、

Exit 1となり、起動しない

という状況になっていたのは、 docker-commpose log の結果から明らかのように、エラーの発生です。

web_1 | 2021/06/29 14:11:37 [emerg] 9#9: unexpected end of file, expecting ";" or "}" in /etc/nginx/conf.d/nayamitter2.conf:30
web_1 | nginx: [emerg] unexpected end of file, expecting ";" or "}" in /etc/nginx/conf.d/nayamitter2.conf:30
nayamitter2_web_1 exited with code 1

この nayamitter2.conf の設定に記述上の問題があり(始めて docker-compose up を実行した段階では)、結果 web という名前のサービスが起動できず、 exited with code 1(エラーによるプロセス終了を表す、終了コード 1)が出ているという状況でした。

ttyをtrueにする
=> docker runでの-itに相当するものなので、これを付加 => 起動せず

こちらを試されたようですが、正常に起動できない Docker イメージにオプションを付けても、(エラーが出ますので)起動しません。

どうしたら起動できるのか?

web 用として記載された「nginx.conf」には構文上の問題は無いように見えます。(実際、nginx -t で構文確認してもエラーはありません)。

既に(docker-compose up初回実行時に)作成済みの web 用イメージは、このままでエラーが出続けるので、イメージを作り直す必要があります。

web サービスのみイメージを作り直すのであれば、

shell

1docker-compose build --no-cache web

このようなコマンドでできます。

あるいは、全てまとめて作り直すのであれば、

shell

1docker-compose up -d --build

このようなコマンドもあります。

ただし、これらは今の環境を全て作り直してしまいます(あとから確認できなくなります)ので、出来れば、これまでとは違うディレクトリ(Docker Compose のプロジェクト)に、docker-compose.yml や Dockerfile などをコピーし、再度作り直して検証されるのをおすすめします。

投稿2021/06/29 21:39

zembutsu

総合スコア1584

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

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

asm_t

2021/06/30 09:47

zembutsu様 とても丁寧でわかりやすく教えてくださり、ありがとうございます! nginx -tで構文確認ができるのですね!勉強になりました。 また、わざわざ「nginx.conf」に構文上の問題がないことまでご確認いただきありがとうございました。 イメージを作り直す必要があるとのことでしたので、教えてくださったコマンドを実行してみたところ無事にUpになりました! 本当にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問