WebアプリをDocker化
この記事ではWebアプリをDocker化する方法を紹介していきたいと思います。
※今回の例はrubyとrailsです。
まずはアプリケーションディレクトリ内にDockerfile
を作成します
Dockerfile
内にはどういう内容でコンテナを作成するかを記載していきます。
既存プロジェクトがある場合はバージョン等は合わせて下さい。
FROM ruby:3.0.2 RUN mkdir /rails-app WORKDIR /rails-app COPY Gemfile /rails-app/Gemfile COPY Gemfile.lock /rails-app/Gemfile.lock RUN bundle install COPY . /rails-app
次にdocker-compose.yml
を作成します
docker-composeは複数のコンテナを立ち上げる際にとても便利です。
下記ではWeb
とDB
のコンテナが2つ立ち上がるようになっています。
version: '3' volumes: db-data: services: db: image: postgres volumes: - 'db-data:/var/lib/postgresql/data' web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' ports: - '3000:3000' # ホストのファイルシステムとコンテナのファイルシステムを同期 volumes: - '.:/rails-app' environment: - 'DATABASE_PASSWORD=test' tty: true stdin_open: true depends_on: - db
余談ですが、DBを変更した場合(sqlite → postgresql)はdatabase
関連のファイルを変更するように注意して下さい。
Dockerfile
に基づいてコンテナイメージが作成されます
docker-compose build
ビルドされたイメージを使用してコンテナを起動
docker-compose up
DBの生成と初期化を行います
docker-compose run web rake db:create db:migrate
後はlocalhost:3000
にアクセスすれば表示さればOK
※railsはポート番号は3000なので3000になっていますが他の言語では違うので注意
以上でアプリのDocker化が完了です!