超初心者ながら、仕事でdockerというものを初めて触り「なんか面白いもの作れるのでは?」と思って自分でrubyのスクレイピングができる環境を構築してみたいと思った。
version: '2'
services:
play:
build: ./
container_name: play
Dockerfile
FROM alpine:3.5
RUN apk update && \
apk upgrade && \
apk add --no-cache \
bash \
curl-dev \
ruby-dev \
build-base \
git \
ruby \
ruby-irb \
ruby-io-console \
ruby-rdoc \
ruby-bundler
RUN mkdir /root/src
COPY ./src/ /root/src
WORKDIR /root/src
RUN bundle install
CMD ["top"]
ディレクトリ構成
/project_name
/src
Gemfileとか
docker-compose.yml
Dockerfile
version: '2'
services:
play:
build: ./
container_name: play
volumes:
- ./src:/root/src #追加
FROM alpine:3.5
RUN apk update && \
apk upgrade && \
apk add --no-cache \
bash \
curl-dev \
ruby-dev \
build-base \
git \
ruby \
ruby-irb \
ruby-io-console \
ruby-rdoc \
ruby-bundler
WORKDIR /root/src
RUN bundle install --path .bundle
CMD ["top"]
これで、dockerコンテナ内で実行したbundle installの.bundleファイルがホスト側にも追加されると思ったら、
ERROR: Service 'play' failed to build: The command '/bin/sh -c bundle install --path .bundle' returned a non-zero code: 10
bundle installできないよ!と言われてしまった...
いろいろ調べて見たところ、docker-compose.ymlのvolumesによってフォルダがマウントされるのはbuildを実行した後なので、Dockerfileのbundle installする段階ではファイルが見つからなくて実行できないよ!って事らしい...