LoginSignup
1
0

More than 3 years have passed since last update.

Homebrew + rbenv + Bundler + dockerで開発環境をマネージドに構築する(後編)

Last updated at Posted at 2020-01-15

前編〜からの続き

前提

  • 便宜上、既存のワーキングコピーがあります

Docker手順

1. Dockerfileを作成する
Dockerfile
FROM ruby:2.6.5

# Setting environment
ENV LANG C.UTF-8
ENV TZ Asia/Tokyo
ENV APP_HOME /var/www/capistrano_sample_app_v1

# Install libraries
RUN apt-get update -qq && \
    apt-get install -y build-essential \ 
                       libpq-dev \        
                       nodejs \           
                       vim \
                       default-mysql-client
RUN gem install bundler -v '2.1.4'

# Create app home
RUN mkdir -p $APP_HOME

WORKDIR $APP_HOME

# Copy Gemfile from origin
ADD Gemfile $APP_HOME/Gemfile

RUN bundle _2.1.4_ install --path vendor/bundle

ADD . $APP_HOME

E: Package 'mysql-client' has no installation candidateとなった場合

  • mysql-clientは消滅しており、代わりに default-mysql-client を使うか、 mariadb-client となります

Dockerfileのコマンド

コマンド 説明
FROM 使用するイメージとバージョン
RUN コマンドの実行。railsに必要な必要なnodejsとpostgeqsqlをインストールしている
WORKDIR そのままの意味。作業ディレクトリを設定します。
ADD ローカルのファイルをコンテナへコピーする(昔のCOPYコマンドになります)
ENTRYPOINT 一番最初に実行するコマンド(ここではentrypoint.shを参照)
EXPOSE コンテナがリッスンするport番号
CMD イメージ内部のソフトウェア実行(つまりRailsのことですね)
2. docker-composeを作成する
docker-compose.yml
version: '3'
services:
  api:
    tty: true
    stdin_open: true
    build: .
    ports:
      - "8080:8080"
    command: /bin/sh -c "rm -f /capistrano_sample_app_v1/tmp/pids/server.pid && bundle exec rails s -p 8080 -b '0.0.0.0'"
    volumes:
      # ホストのカレントディレクトリをコンテナの/capistrano_sample_app_v1にマウント
      - .:/capistrano_sample_app_v1
3. docker build
Terminal
$ docker-compose up --build
...省略...
Successfully built b72c436f105e
Successfully tagged capistrano_sample_app_v1_api:latest
Creating capistrano_sample_app_v1_api_1 ... done
Attaching to capistrano_sample_app_v1_api_1
api_1  | from /var/www/capistrano_sample_app_v1/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap.rb:22:in `setup': The 'disable_trace' method is not allowed with this Ruby version. current: 2.6.5, allowed version: < 2.5.0
api_1  | => Booting Puma
api_1  | => Rails 5.2.4.1 application starting in development 
api_1  | => Run `rails server -h` for more startup options
api_1  | Puma starting in single mode...
api_1  | * Version 3.12.2 (ruby 2.6.5-p114), codename: Llamas in Pajamas
api_1  | * Min threads: 5, max threads: 5
api_1  | * Environment: development
api_1  | * Listening on tcp://0.0.0.0:8000
api_1  | Use Ctrl-C to stop
4. プロセスの確認
Terminal
$ docker-compose ps
             Name                           Command               State           Ports         
------------------------------------------------------------------------------------------------
capistrano_sample_app_v1_api_1   /bin/sh -c rm -f /capistra ...   Up      0.0.0.0:8000->8000/tcp
5. 停止
Terminal
$ docker-compose down
Stopping capistrano_sample_app_v1_api_1 ... done
Removing capistrano_sample_app_v1_api_1 ... done
Removing network capistrano_sample_app_v1_default

これで、ワーキングコピーをコンテナとして起動することができました

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0