RailsでBasic認証・Dockerで環境変数を設定

Basic認証の処理を書く

class ApplicationController < ActionController::Base

  before_action :basic_auth
  protect_from_forgery with: :exception

  private
  def basic_auth
    authenticate_or_request_with_http_basic do |username, password|
      username == ENV.fetch('BASIC_AUTH_USER') && password == ENV.fetch('BASIC_AUTH_PASSWORD')
    end
  end
end

ENV.fetch('BASIC_AUTH_USER') ENV.fetch('BASIC_AUTH_PASSWORD')環境変数で設定しているものを参照する



環境変数の設定

環境変数とは

パスワードや秘密鍵など、Githubに載せて行きたくない・漏らしてはいけない情報を、サーバーなどのOSに保存しておき、 それをアプリケーションに渡す仕組み

dockerで環境変数を設定する方法

設定したい環境変数をまとめたファイルを作成

BASIC_AUTH_USER=user
BASIC_AUTH_PASSWORD=password

docker composeファイルに設定を追記

version: '3'
services:
  app:
    container_name: "app"
    build:
      context: .
      dockerfile: Dockerfile
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    ports:
      - 3000:3000
    external_links:
      - db
    volumes:
      - .:/app

    # 追記
    env_file:
      - .env