質問内容
Docker初心者です。
DockerでRuby on Railsの開発環境を構築しています。
Gemfileを変更する度に $ docker-compose build
を行なって全てのGemのインストールを行うのが時間がかかると思い、以下の記事の方法を元にGemのインストール先を /bundle
に変更してみました。
docker-composeでRailsのGemを更新する時、docker buildするのを回避したい
これにより、Gemfileを変更しても $ docker-compose build
は必要なくなり、 $ docker-compose run --rm web bundle install
でGemのインストールを行えるようになって快適になりました。(アプリケーションのコンテナ名がweb)
しかし、Gemのインストール先がwebコンテナの外に出たことになり(?)、環境をイメージ内に閉じ込めてしまえるというDockerのメリットが失われるのではないかと気になりました。
この場合、Gemのインストール先はwebコンテナのままにした方がDockerの強みを活かせるのでしょうか?
よろしくお願いいたします!
※リンク先のQiitaの投稿、ならびに投稿者様を批判する意図はありません。
補足情報
- macOS Mojave
- Docker Desktop Community 2.0.0.2
- docker-compose 1.23.2
- Bundler 1.16.3
- ruby 2.5.1p57
- Ruby on Rails 5.2.2
Dockerfile
1FROM ruby:2.5.1 2ENV LANG C.UTF-8 3 4RUN apt-get update -qq \ 5 && apt-get install -y build-essential \ 6 libpq-dev \ 7 cmake 8 9RUN gem install bundler 10 11WORKDIR /tmp 12 13COPY Gemfile Gemfile 14COPY Gemfile.lock Gemfile.lock 15 16RUN bundle install --path /bundle --jobs 4 17 18ENV APP_HOME /app 19 20RUN mkdir -p $APP_HOME 21 22WORKDIR $APP_HOME 23 24COPY . $APP_HOME 25 26EXPOSE 3000 27CMD bundle exec puma -C config/puma.rb
docker
1version: '2' 2 3services: 4 db: 5 image: mysql:5.7 6 environment: 7 - MYSQL_ROOT_PASSWORD=password 8 9 web: 10 build: . 11 command: bundle exec rails s -b 0.0.0.0 12 volumes: 13 - .:/app 14 - bundle:/bundle 15 ports: 16 - '3000:3000' 17 depends_on: 18 - db 19 environment: 20 - RAILS_ROOT=/app 21 - RAILS_ENV=development 22 23volumes: 24 bundle: 25 driver: local
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/09 05:10