はじめに
お疲れさまです!
おおくまです!
今回は、既存のRailsアプリ
を初めてDocker化
してみました!
環境としては、
Docker + Ruby3.2.2 + Rails7.0.8 + importmap + Node.js 20.2.0 + Tailwind CSS + daisyUI + PostgreSQL
です!
データベースに関しては、ローカルではSQLite
、本番ではPostgreSQL
を使っていたので、どちらもPostgreSQL
を使うように修正します!
また、サーバーを立ち上げる際は、./bin/dev
のコマンドを使い、
JSやCSSがビルドされ、なおかつJSやCSSを変更したときに自動的に再ビルドされるようにします!
備忘録として残したいと思います!
こちらがDocker化
する前のリポジトリです!
注意点
私はプログラミング学習中で、初学者です。
内容に誤りがある場合があります。
コメント等で教えていただけると幸甚です。
環境
Ruby 3.2.2
Rails 7.0.8
Node.js 20.2.0
Docker Desktopをインストール済み
手順
touch Dockerfile compose.yaml entrypoint.sh
Docker化
したいアプリのディレクトリに移動した状態で、上記のコマンドを実行し、ファイルを3つ作成します!
それぞれコードを書いていきます!
FROM ruby:3.2.2
ENV TZ Asia/Tokyo
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs && apt-get install -y vim
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash - \
&& wget --quiet -O - /tmp/pubkey.gpg https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
&& apt-get update -qq \
&& apt-get install -y nodejs yarn
WORKDIR /kuma_lab
COPY Gemfile Gemfile.lock /kuma_lab/
RUN bundle install
COPY package.json yarn.lock /kuma_lab/
RUN yarn install
RUN yarn add daisyui
COPY . /kuma_lab/
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
CMD ["./bin/dev"]
services:
db:
image: postgres
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- postgres_volume:/var/lib/postgresql/data
ports:
- '5432:5432'
web:
build:
context: .
dockerfile: Dockerfile
command: sh -c "rm -f tmp/pids/server.pid && ./bin/dev"
volumes:
- .:/kuma_lab
- node_modules:/kuma_lab/node_modules
ports:
- 3000:3000
stdin_open: true
tty: true
depends_on:
- db
volumes:
postgres_volume:
node_modules:
#!/bin/bash
set -e
rm -f /kuma_lab/tmp/pids/server.pid
exec "$@"
次にProcfile.dev
を編集します!
- web: bin/rails server -p 3000
+ web: bin/rails server -b 0.0.0.0 -p 3000
css: bin/rails tailwindcss:watch
次にデータベース
周りを編集していきます!
: > Gemfile.lock
# 〜中略〜
+ gem 'pg'
group :development, :test do
gem 'debug', platforms: %i[mri mingw x64_mingw]
- gem 'sqlite3', '~> 1.4'
end
- group :production do
- gem 'pg'
- end
docker compose exec web bundle install
default: &default
adapter: postgresql
encoding: unicode
host: db
username: user
password: password
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: test_app_development
test:
<<: *default
database: test_app_test
production:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
docker-compose up -d --build
docker compose exec web rails db:prepare
上記のコマンドで、ビルドし、データベースをセットアップすれば、環境構築は終了です!
こちらがDocker化
した後のリポジトリです!
お疲れ様でした!