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

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

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

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

Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

nginx

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

Docker

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

Q&A

解決済

2回答

1840閲覧

[docker,docker-compose,nginx,puma,rails,mysql]deviseを使用してログインサインアップした後、http通信がhttpsにリダイレクトしてしまう

kosuke_ikeura

総合スコア19

docker-compose

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

Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

nginx

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

Docker

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

0グッド

0クリップ

投稿2020/03/23 07:31

いつもお世話になっております。
環境
CentOS7
virtualbox vagrant
rails5.2.4.2
ruby2.5.1
docker 19.03.8
docker-compose 1.24.0

【前提】
docker-composeで、nginx×puma×rails×mysqlの環境を構築し、ポートフォリオ用のサービスを開発しています。
こちらの記事を参考に作成しました。
sslの設定はせず、全てhttp通信でサービスを構築したいと考えています。

【わからないこと】
railsのgem'devise'を使ってログイン機能を実装したいです。
しかしサインアップ・ログインした後、httpsにリダイレクトしてしまい、表示されないです。(httpは通信することができます。)
今回はsslの設定はせず、http通信のみで行いたいです。
以下ソースコードです。

/opt/chellskitchen ├── containers │ └── nginx │ ├── Dockerfile │ └── nginx.conf ├── docker-compose.yml ├── Dockerfile ├── environments │ └── db.env ├── Gemfile └── Gemfile.lock app configなど省略

docker-compose.yml

version: '3' services: app: build: context: . env_file: - ./environments/db.env command: bundle exec puma -C config/puma.rb volumes: - .:/chells-kitchen depends_on: - db db: build: ./environments image: mysql:5.7 env_file: - ./environments/db.env volumes: - ./tmp/db:/var/lib/mysql web: build: context: containers/nginx volumes: - ./containers/nginx/ssl:/etc/nginx/ssl - .:/chells-kitchen ports: - 80:80 depends_on: - app

Dockerfile

FROM ruby:2.5.1 # リポジトリを更新し依存モジュールをインストール RUN apt-get update -qq && \ apt-get install -y build-essential \ nodejs # ルート直下にwebappという名前で作業ディレクトリを作成(コンテナ内のアプリケーションディレクトリ) RUN mkdir /chells-kitchen WORKDIR /chells-kitchen # ホストのGemfileとGemfile.lockをコンテナにコピー ADD Gemfile /chells-kitchen/Gemfile ADD Gemfile.lock /chells-kitchen/Gemfile.lock # bundle installの実行 RUN bundle install # ホストのアプリケーションディレクトリ内をすべてコンテナにコピー ADD . /chells-kitchen # puma.sockを配置するディレクトリを作成 RUN mkdir -p tmp/sockets

./containers/nginx/nginx.conf

upstream chells-kitchen { server unix:///chells-kitchen/tmp/sockets/puma.sock; } server { listen 80; server_name chells-kitchen.local; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /chells-kitchen/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 @chells-kitchen; keepalive_timeout 5; location @chells-kitchen { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_pass http://chells-kitchen; } }

./containers/nginx/Dockerfile

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

appllication_controller.rb

ruby

1class ApplicationController < ActionController::Base 2 before_action :configure_permitted_parameters, if: :devise_controller 3#ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):というエラー回避のための設定 4 protect_from_forgery 5#name値を受け取るための設定 6 def configure_permitted_parameters 7 devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) 8 devise_parameter_sanitizer.permit(:sign_in, keys: [:name]) 9 end 10#サインアップ等をした後のリダイレクトの設定 11 def after_inactive_sign_up_for(resource) 12 flavors_path 13 end 14 def after_sign_in_path_for(resource) 15 flavors_path 16 end 17 def after_sign_out_path_for(resource) 18 root_path 19 end 20end

userテーブルのカラム

mysql

1mysql> show columns from users; 2+------------------------+--------------+------+-----+---------+----------------+ 3| Field | Type | Null | Key | Default | Extra | 4+------------------------+--------------+------+-----+---------+----------------+ 5| id | bigint(20) | NO | PRI | NULL | auto_increment | 6| name | varchar(255) | YES | | NULL | | 7| email | varchar(255) | NO | UNI | | | 8| encrypted_password | varchar(255) | NO | | | | 9| reset_password_token | varchar(255) | YES | UNI | NULL | | 10| reset_password_sent_at | datetime | YES | | NULL | | 11| remember_created_at | datetime | YES | | NULL | | 12| created_at | datetime | NO | | NULL | | 13| updated_at | datetime | NO | | NULL | | 14+------------------------+--------------+------+-----+---------+----------------+ 159 rows in set (0.06 sec)

app/views/devise/registration/new.html.erb

ruby

1<div class="wrapper"> 2 <div class="resistration-wrapper"> 3 <h2>サインアップ</h2> 4 <div class="form-wrapper"> 5 <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 6 <table class="form-table"> 7 <tbody> 8 <%= render "devise/shared/error_messages", resource: resource %> 9 <tr> 10 <th>名前</th> 11 <td><%= f.text_field :name, placeholder: "suke", id: "name" %></td> 12 </tr> 13 <tr> 14 <th>メールアドレス</th> 15 <td><%= f.email_field :email, placeholder: "mitekurete@arigatou.com" %></td> 16 </tr> 17 <tr> 18 <th>パスワード</th> 19 <td><%= f.password_field :password, autocomplete: "new-password", placeholder: "arigatou" %></td> 20 </tr> 21 <tr> 22 <th>パスワード確認</th> 23 <td><%= f.password_field :password_confirmation, autocomplete: "new-password", placeholder: "arigatou" %></td> 24 </tr> 25 </tbody> 26 </table> 27 <div class="action-wrapper"> 28 <%= f.submit "サインアップ", class: "action" %> 29 </div> 30 <% end %> 31 </div> 32 </div> 33</div> 34<%= render "devise/shared/links" %>

deviseのコントローラーは作成していません。application_controller.rbでuser関連の処理をしています。
こちらの記事が同じようなトラブルシューティングをしていたのですが、記述の方法がわからず、、、

もしかしたら関係のないコードをあげているかもしれません。
申し訳ありませんが、ご容赦ください。
解決に必要なものはご指摘いただければ公開いたしますのでよろしくお願いします。
お力添えをいただければ幸いです。

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

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

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

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

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

guest

回答2

0

自己解決

nginx.confを

location @chells-kitchen { 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://chells-kitchen; 27 }

としたら、https通信しなくなりました。

投稿2020/03/23 11:51

kosuke_ikeura

総合スコア19

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

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

0

以下にそれぞれssl、httpsに関する記述があります。環境を再確認されてはどうです?

docker-compose.yml

- ./containers/nginx/ssl:/etc/nginx/ssl

./containers/nginx/nginx.conf

proxy_set_header X-Forwarded-Proto https;

投稿2020/03/23 11:51

yukky1201

総合スコア2751

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問