【Docker】Dockerコンテナに環境変数を設定完了するまでの流れについて


設定の必要性に気づいた経緯

開発を行う中で、ターミナルにエラーが表示された。

SocketError - getaddrinfo: Name or service not known:
app/models/api_suggest.rb:19:in suggest'
app/controllers/suggests_controller.rb:6:in
search'

SocketError...??
まずソケットがわからない、、
こちらを参考にさせて頂いてなんとなく理解、、

ソケット(英:socket)とは

プログラムとネットワークをつなげる接続口のこと

「SocketError - getaddrinfo: Name or service not known」
「ネットワーク接続口のネームかサービスを知らないです。」
と言われている、、?

ここで、ローカルで設定した外部APIのキーとURIの環境変数をDockerには登録していないことに気づく。

登録までの流れ

$ open ~/.bash_profile

で、その環境変数を確認

export API_KEY='〇〇'
export API_URI='https://〇〇〜〜〜.herokuapp.com/api/suggests'

env_file.envを作成

env_file.env
API_KEY
API_URI

プロジェクトルートディレクトリの直下に作成し、環境変数名を書く。

docker-compose.ymlにenv_fileを読み込ませる記述を追加

docker-compose.yml
services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
    networks:
      - default
   #≀≀≀
 アプリ名:
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - '3000:3000'
   #≀≀≀
 env_file: env_file.env #←ここ

環境変数が登録、読み込みされているかの確認。

ターミナルで

$ docker-compose run --rm アプリ名 env

とすると登録のある環境変数がずらっと表示される。

終わりに。

転職の為、未経験の状態からRailsを学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございます。