🗂

Dockerを使って開発するときに必須な設定3つ

2024/12/22に公開

アイキャッチ

対象読者

  • Docker初心者
  • Dockerをつかってアプリケーションの構築を行おうとしている人

事前準備

wsl --install

Dockerを使って開発するときに必須な設定

  1. ネットワーク
  2. マウント
  3. ホットリロード

1. ネットワーク

ホスト環境での動作確認や、アプリケーション同士の接続に必須の設定。

ホストとコンテナのポートをマッピングする

アプリケーションをホスト環境から動作確認する際に必要。

docker run の場合

コマンド プロンプト
- p <ホストのポート>:<コンテナのポート> 

docker-compose の場合

docker-compose.yml
    ports:
      - <ホストのポート>:<コンテナのポート> 

ホストからコンテナのlocalhostへアクセス可能にする

サーバーサイドのアプリケーションをホスト環境から動作確認する際に必要。
受けるアドレスを0.0.0.0に変更する。

docker run の場合

コマンド プロンプト
-o 0.0.0.0

docker-compose の場合

docker-compose.yml
    command: <実行したいコマンド> -o 0.0.0.0

Dockerのネットワークを設定する

クライアントサイドからサーバーサイドに接続したり、サーバーサイドのアプリケーションからDBに接続したりとアプリケーション同士の接続に必要な設定。

docker run の場合

  1. Dockerのネットワークを作成する
コマンド プロンプト
docker network create my-net
  1. 各コンテナがネットワークに所属するように設定する
コマンド プロンプト
--net my-net

docker-compose の場合

docker-composeの場合は自動でネットワークの設定がされるため設定不要。
各コンテナから接続のためにホスト名を指定する際は、サービス名を指定する。

2. マウント

ホストで編集しているファイルをコンテナ内にも渡せる。
ホストで編集できると好きなエディタを使えるため楽。

docker run の場合

コマンド プロンプト
-v <ホストのパス>:<コンテナのパス>

ホストのパスには $PWD/~~~ とすると現在のフォルダー以下から書けるので楽

docker-compose の場合

docker-compose.yml
    volumes:
      - <ホストのパス>:<コンテナのパス>

ホストのパスには ./ とするとdocker-compose.ymlが存在するフォルダー以下から書けるので楽。

3. ホットリロード

フレームワークごとに設定を調べて実行する。
Sinatraの場合

  • 公式のイメージからコンテナを作成する
  • rbファイルの記述
xxx.rb
require 'sinatra/reloader'

補足

ログ確認方法

エラーが存在した場合にログ確認して解消する。

コマンド プロンプト
docker logs <コンテナ名 or ID>

オプション

-f:出力されているログを順次確認できる

コマンド プロンプト
docker logs <コンテナ名 or ID> -f

Discussion