LoginSignup
0

More than 3 years have passed since last update.

rails 6 を使用してのDocker開発環境を構築しました。

Last updated at Posted at 2019-10-16

開発環境

  • macOS Mojave ver.10.14.6
  • Docker ver.19.03.2
  • docker compose ver.1.24.1

私について

  • 独学1ヶ月目
  • 間違えている箇所、内容あれば是非コメントください!

問題点

rails6開発環境をDocker上で構築するために、
1. Dockerdileとdocker-compose.ymlファイルを作成。
2. ターミナルにて docker-compose up コマンドを実行。
3. 新規ターミナルで、 docker exec -it 実行。コンテナ内に入る。
4. しかしwebpackerがインストールされていませんとエラーが出てしまう。

ムムム、どうしたものか。。

Dockerfile

qiita.rb
FROM ruby:2.6.5-alpine AS builder

RUN apk --update add --virtual build-dependencies \
    build-base \
    curl-dev \
    mysql-dev \
    linux-headers

RUN gem install bundler

WORKDIR /tmp

COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock

ENV BUNDLE_JOBS=4

RUN bundle install
RUN apk del build-dependencies

FROM ruby:2.6.5-alpine

RUN apk --update add \
    bash \
    nodejs \
    mariadb-dev \
    tzdata \
    yarn 

RUN gem install bundler

WORKDIR /tmp
COPY --from=builder /usr/local/bundle /usr/local/bundle

ENV APP_HOME /myapp
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
COPY . $APP_HOME

docker-compose.yml

qiita.rb
version: '3'
services:

  mysql:
   image: mysql:8.0.17
   command: --default-authentication-plugin=mysql_native_password
   volumes:
     - "./mysql-data:/var/lib/mysql"
   environment:
      MYSQL_ROOT_PASSWORD: root

  app:
    build: .
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - ".:/app"
    ports:
      - "3000:3000"
    tty: true
    depends_on:
     - mysql
    working_dir: "/app"

解決方法

  • Docker-compose.ymlファイルに、binの中にwebpacker-dev-serverを作成する記述を追加しました。 同様の操作をターミナルでを実行すると。。。やっと成功しました!
qiita.rb
version: '3'
services:

  mysql:
   image: mysql:8.0.17
   command: --default-authentication-plugin=mysql_native_password
   volumes:
     - "./mysql-data:/var/lib/mysql"
   environment:
      MYSQL_ROOT_PASSWORD: root

  app:
    build: .
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - ".:/app"
    ports:
      - "3000:3000"
    tty: true
    depends_on:
     - mysql
    working_dir: "/app"

  webpacker:
    build: .
    command: bundle exec bin/webpack-dev-server

スクリーンショット 2019-10-16 11.11.23.png

最後に

初めてのDockerでの環境構築、苦労しましたが一応これで成功しました。ここからアプリの作成を初めて行きます!!
また、今回の手順で「他にもこんな方法あるよ!」、「ここ間違ってるよ!」とか諸先輩方のご指摘もお待ちしております!
最後までご覧頂きありがとうございました。

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
0