DockerでRails+別コンテナのMySQLの環境を構築してみる(Windows)
.png)
目次
開発環境
- OS:Windows11
- Docker Desktopインストール済み
- VSCodeインストール済み
MySQLは下記の記事で構築した別プロジェクト自体のコンテナ上で動いているものになります。
Dockerファイルを作成する
下記のコマンドを実行し、Dockerファイルを作成します。
エラーメッセージが表示されますが、Dockerファイルが作成されていれば問題ありません。
type nul > Dockerfile下記の内容でDockerファイルを編集します。
FROM ruby:3.3
WORKDIR /service
# GemfileとGemfile.lockファイルを
# イメージのserviceディレクトリ内にコピー
COPY Gemfile* /service/
RUN bundle install
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]
Gemfileを作成する
下記のコマンドを実行し、Gemfileを作成します。
エラーメッセージが表示されますが、Gemfileが作成されていれば問題ありません。
type nul > Gemfile下記の内容でGemfileを編集します。
source 'https://rubygems.org'
gem 'rails', '~> 7.1.3'
Gemfile.lockを作成する
下記のコマンドを実行し、Gemfile.lockを作成します。
エラーメッセージが表示されますが、Gemfile.lockが作成されていれば問題ありません。
このファイルは編集不要です。
type nul > Gemfile.lock
YAMLファイルを作成する
下記のコマンドを実行し、YAMLファイルを作成します。
エラーメッセージが表示されますが、YAMLが作成されていれば問題ありません。
type nul > docker-compose.yml下記の内容でYAMLファイルを編集します。
services:
web:
build: .
ports:
- '3000:3000'
environment:
MYSQL_HOST: db
MYSQL_USER: odaneko
MYSQL_PASSWORD: odaneko
volumes:
- type: bind
source: ./service
target: /service
networks:
- mysql_default
networks:
mysql_default:
external: true
コンテナをビルド
下記のコマンドを実行して、コンテナをビルドします。
docker compose build
Railsプロジェクトを作成する
下記のコマンドを実行して、Railsプロジェクトを作成します。
docker compose run web rails new . --database=mysql
serviceフォルダ配下のGemfile、Gemfile.lockをカレントディレクトリにコピペします。
copy service\Gemfile Gemfile
copy service\Gemfile.lock Gemfile.lock
DB設定
config/database.ymlを編集します。
ポイントはhostがコンテナ名となっていることです。
コンテナ名やユーザー、パスワード、データベース名は各自のMySQLの環境に合わせてください。
username: odaneko
password: odaneko
host: db database: odaneko
コンテナを起動する
下記のコマンドを実行して、コンテナを起動します。
docker compose up -d --build
Docker上でも起動していることを確認します。

環境が構築できたか確認
下記のURLを開きます。
http://localhost:3000/
問題なく表示されれば、環境構築が無事完了しています。

以上になります。
お読み頂き、ありがとうございました。

