なんとなく自分でももっとスマートなインストールの方法があるのではないかと思いながら、とりあえず問題なく動作するしってことで一段落してるので現状の開発環境構築の手順の備忘録です。ちなみに今回は既存のRailsアプリをDocker環境で動作させるときにやった手順です。
とりあえず新規にRailsをインストールし、のちほどアプリのデータをマウントし直しています。
※ パスやディレクトリ名は適宜変更が必要。
$ docker-compose run MYAPP rails new
でRailsインストールdocker-compose run
でコマンド実行。[dockerfile]
FROM ruby:2.5.1
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
ENV APP_ROOT /usr/src/MYAPP
WORKDIR $APP_ROOT
ADD Gemfile $APP_ROOT
ADD Gemfile.lock $APP_ROOT
RUN bundle install
ADD . /MYAPP
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]
[docker-compose.yml]
version: '3'
services:
MYAPP:
container_name: MYAPP
build: ./rails
volumes:
- /Users/hoge/huga/piyo/MYAPP:/usr/src/MYAPP
ports:
- "3000:3000"
depends_on:
- MYAPP_db
[Gemfile]
source "https://rubygems.org"
gem 'rails', '5.2.0'
[bash]
$ docker-compose run MYAPP rails new .
次に、既存のアプリデータをマウントし直してサーバを起動します。
docker-compose run
でコマンド実行(サーバ起動)。[Dockerfile]
FROM ruby:2.5.1
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
ENV APP_ROOT /usr/src/MYAPP
WORKDIR $APP_ROOT
ADD ./html/MYAPP/Gemfile $APP_ROOT
ADD ./html/MYAPP/Gemfile.lock $APP_ROOT
RUN bundle install
ADD ./html/MYAPP $APP_ROOT
[docker-compose.yml]
version: '3'
services:
MYAPP:
container_name: MYAPP
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- /Users/hoge/fuga/piyo/MYAPP:/usr/src/MYAPP
ports:
- "3000:3000"
depends_on:
- MYAPP_db
[bash]
$ docker-compose up -d
以上で、既存アプリが実行できるはず。
結構もちゃもちゃした。もっとDockerに詳しくなりたい。
最後までお読みいただき、ありがとうございました。
ご意見などありましたら@hippohackへDMをお願いいたします。