開発環境
- macOS Mojave ver.10.14.6
- Docker ver.19.03.2
- docker compose ver.1.24.1
私について
- 独学1ヶ月目
- 間違えている箇所、内容あれば是非コメントください!
問題点
rails6開発環境をDocker上で構築するために、
- Dockerdileとdocker-compose.ymlファイルを作成。
- ターミナルにて
docker-compose up
コマンドを実行。 - 新規ターミナルで、
docker exec -it
実行。コンテナ内に入る。 - しかし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

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