前提
【ローカル開発環境】
ローカルでDockerを用いて、
WebサーバーにNginx、バックエンドにRailsを用いて、PumaとNginxをソケット通信させ開発を行っております。
※ローカルの開発環境では、PumaとNginxの通信はできております。
【AWS本番環境】
ECRにRailsとNginxのイメージをPushし、ECSでコンテナを起動させました。
※ECSのタスク定義で、Railsコンテナのポートに「host:未設定,コンテナ:未設定」、Nginxコンテナのポートに「host:80,コンテナ:80」を設定
※Nginxコンテナのネットワーク設定の「リンク」で、「grow-rails:grow-rails」と入力し、PumaとNginxとを連携
エラー内容・解決したいこと
起動したECSインスタンスのパブリックDNSにアクセスすると、「502 Bad Gateway」という表示が出ました。
どなたか解決方法を教えてくださいましたら幸いです。
よろしくお願いいたします。
試したこと
-
nginx.confの「servername」をECSコンテナのDNS名に変更したがエラーは解消されず
-
稼働しているECSインスタンス内のNginxコンテナにssh接続し、Nginxのアクセスログ・エラーログを確認したが何も出力されなかった
開発環境構成図(初期フォルダ・ファイル)
.
├── containers
│ └── nginx
│ └── Dockerfile
│ └── nginx.conf
│
└── docker-compose.yml
└── Dockerfile
└── Gemfile
└── Gemfile.lock
ソースコード
【Dockerfile(Rails用)】 FROM ruby:2.6.0 RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && apt-get update -qq && apt-get install -y build-essential nodejs npm RUN apt-get update && apt-get install -y curl apt-transport-https wget && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && apt-get update && apt-get install -y yarn RUN mkdir /grow-rails ENV APP_ROOT /grow-rails WORKDIR $APP_ROOT COPY ./Gemfile $APP_ROOT/Gemfile COPY ./Gemfile.lock $APP_ROOT/Gemfile.lock RUN bundle install COPY . $APP_ROOT RUN mkdir -p tmp/sockets tmp/pids VOLUME /grow-rails/public VOLUME /grow-rails/tmp EXPOSE 3000 CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"]
【Dockerfile(Nginx)】 FROM nginx:1.15.8 RUN rm -f /etc/nginx/conf.d/* COPY nginx.conf /etc/nginx/conf.d/grow-rails.conf CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf EXPOSE 80
【nginx.conf】 upstream grow-rails { server unix:///grow-rails/tmp/sockets/puma.sock; } server { listen 80; server_name localhost; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /grow-rails/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 @grow-rails; keepalive_timeout 5; location @grow-rails { 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://grow-rails; } }
【docker-compose.yml】 version: "3" services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: 任意のパスワード MYSQL_USER: 任意のユーザー名 volumes: - db-data:/var/lib/mysql ports: - "3306:3306" app: build: . command: bundle exec puma -C config/puma.rb volumes: - .:/grow-rails - public-data:/grow-rails/public - tmp-data:/grow-rails/tmp - log-data:/grow-rails/log ports: - "3000:3000" links: - db tty: true stdin_open: true web: build: context: containers/nginx volumes: - public-data:/grow-rails/public - tmp-data:/grow-rails/tmp ports: - 80:80 depends_on: - app volumes: public-data: tmp-data: log-data: db-data:
補足情報(FW/ツールのバージョンなど)
【開発環境】
ruby:2.6
Rails:5.2.4.1
nginx:1.15.8
回答1件
あなたの回答
tips
プレビュー