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

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

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

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

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

nginx

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

Docker

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

Q&A

解決済

1回答

1316閲覧

既存のDocker + Railsのアプリにnginxの環境構築をしたいのだが、imageにnginxが入っていない

kawasaki4563

総合スコア32

docker-compose

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

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

nginx

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

Docker

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

0グッド

0クリップ

投稿2021/04/18 07:49

編集2021/04/20 00:30

herokuにWebアプリケーションをデプロイして、S3を使っていくためにnginxを入れたいです。
ですが、DockerのGUIを見てみると、Nginxが入っていないので、おそらくbuildしても入っていないのだと思います。
前回の質問内容だと入っていルト回答していまいsたが、一度dockerのimageを全部削除しているので、入っていません。
#問題のソースコード
以下、docker-compose.yml

services: app: build: context: /Users/taka/hondaapp command: bash -c "rm -f tmp/pids/server.pid && bundle exec puma -C config/puma.rb" depends_on: db: condition: service_started volumes: - /Users/taka/hondaapp:/mysql:rw - public-data:/mysql/public:rw - tmp-data:/mysql/tmp:rw - log-data:/mysql/log:rw db: environment: MYSQL_PASSWORD: password image: mysql:5.7 volumes: - /Users/taka/hondaapp/tmp/db:/var/lib/mysql/data:rw web: build: context: /Users/taka/hondaapp/nginx depends_on: app: condition: service_started ports: - published: 80 target: 80 volumes: - public-data:/hondaapp/public:rw - tmp-data:/hondaapp/tmp:rw version: '3' volumes: db-data: {} log-data: {} public-data: {} tmp-data: {}

nginx_docker/Dockerfile

FROM nginx:latest RUN rm -f /etc/nginx/conf.d/* ADD nginx.conf /etc/nginx/conf.d/fitO2.conf CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf

ngix_docker/ngix.conf

upstream rails_test { server unix:///rails_test/tmp/sockets/puma.sock; } server { listen 80; server_name localhost; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log debug; root /rails_test/public; client_max_body_size 100m; error_page 404 /404.html; error_page 505 502 503 504 /500.html; try_files $uri/index.html $uri @rails_test; keepalive_timeout 5; location @rails_test { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://rails_test; }

Dockerfile

FROM ruby:2.6.5 RUN apt-get update -qq && \ apt-get install -y build-essential \ libpq-dev \ yarn \ nodejs # 作業ディレクトリの作成、設定 RUN mkdir /app_name ##作業ディレクトリ名をAPP_ROOTに割り当てて、以下$APP_ROOTで参照 ENV APP_ROOT /app_name WORKDIR $APP_ROOT # ホスト側(ローカル)のGemfileを追加する(ローカルのGemfileは【3】で作成) ADD ./Gemfile $APP_ROOT/Gemfile ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock # Gemfileのbundle install RUN bundle install ADD . $APP_ROOT

nginx/Dockerfile

FROM nginx:latest # インクルード用のディレクトリ内を削除 RUN rm -f /etc/nginx/conf.d/* # Nginxの設定ファイルをコンテナにコピー ADD nginx.conf /etc/nginx/hondaapp.conf # ビルド完了後にNginxを起動 CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/hondaapp.conf

nginx/nginx.conf

user root; worker_processes 1; events{ worker_connections 512; } # ソケット接続 http { upstream hondaapp{ server unix:///hondaapp/tmp/sockets/puma.sock; } server { # simple load balancing listen 80; server_name localhost; #ログを記録しようとするとエラーが生じます #root /hondaapp/public; #access_log logs/access.log; #error_log logs/error.log; location / { proxy_pass http://hondaapp; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } } }

#やってみたこと

一度docker-compose configをしてみて、出てきたソースコードを貼り付けてみたのですが、

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーが出ている原因は、
docker-compose.ymlの書き方(書式)が YAML ではないためです。

YAML

1version: '3' 2services: app:

このような記述のため、

ERROR: yaml.scanner.ScannerError: mapping values are not allowed here in "./docker-compose.yml", line 2, column 14

値のマッピングは2行目の14カラムめで許可されていません、というエラーが出ています。

このエラー文字そのものには意味が無く、
こちらは、

YAML

1version: '3' 2services: 3 app:

とすることで2行目のエラーは解消されます。

docker-compose.yaml を拝見しますと、他にも修正箇所が必要にお見受けします。
YAML 形式のファイルでは、スペース(インデント)や改行位置などを揃えるなど注意が必要です。

コマンド、 docker-compose config を実行し、
エラーが出なくなるまで docker-compose.yml を修正されると(正常処理時は YAML ファイルがそのまま画面に出ます)、
docker-compose build を実行できるようになります。

投稿2021/04/18 21:49

編集2021/04/18 21:49
zembutsu

総合スコア1584

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

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

kawasaki4563

2021/04/19 03:13

回答ありがとうございます。回答の通りにやってみたのですが、別のエラーが出てきてしまいました。 mysqlの部分で詰まってしまっているみたいなので、一度Dockerのアプリケーションでimageを確認してみたのですが、MYSQLのイメージは有りました。 そしてIN USEのマークも出ているので起動していると思います
zembutsu

2021/04/19 10:44

そうですね、今回編集された docker-compose.yml で、特にネットワーク周りの操作をされていなければdocker-compose up 時に「ERROR: Network hondaapp-network declared as external, but could not be found. Please create the network manually using `docker network create hondaapp-network` and try again.」といったメッセージが出ていると思います。 ここにありますように、コマンド「docker network create hondaapp-network」を作成した後(正常に作られると、docker network ls コマンドでも確認できるようになります)、改めて docker-compose up -d など試されてみてはいかがでしょう。
kawasaki4563

2021/04/19 12:57

ネットワークを docker network create hondaapp-network を用いて作成してその後に色々とやってみたらローカルでアプリが正常に動くようになりました。 これからHerokuでのデプロイを頑張ってみます。 AWSへのデプロイは心折れました。 ただS3を導入するといったことはやっていこうと思います。
zembutsu

2021/04/19 18:49

docker-compose.yml の問題と、ネットワークの問題が解消できて起動できたようで何よりです。
kawasaki4563

2021/04/20 00:20

そうですね。 NGINXの問題を解決していくのでまだ質問は続けていきます もしなにかわかれば回答していただけるとまじで助かります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問