I am trying to dockerize our Rails app. The main problem for now is that it takes too long to build the image.
I followed this document: https://circleci.com/docs/docker/, and have the following configuration in my
dependencies: cache_directories: - "~/docker" pre: - docker info override: - if [[ -e ~/docker/myapp-web.tar ]]; then docker load -i ~/docker/myapp-web.tar; fi - docker images - docker build --rm=false -t myapp-web:latest . - docker images - mkdir -p ~/docker; docker save -o ~/docker/myapp-web.tar myapp-web:latest
The step of
docker load restores the image as I wished:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE myapp-web latest 84d2c9bc48cd 19 minutes ago 2.411 GB
docker build step ignores that cache, and builds the image from
ruby:2.3.3 (which I specified on
FROM field in my Dockerfile):
$ docker build --rm=false -t myapp-web:latest . Sending build context to Docker daemon 1.117 GB Step 1 : FROM ruby:2.3.3 2.3.3: Pulling from library/ruby # long process taking 5 ~ 8 minutes
And finally I got two images:
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE myapp-web latest b6590ab623dc 20 seconds ago 2.409 GB <none> <none> 84d2c9bc48cd 25 minutes ago 2.411 GB ruby 2.3.3 990fb4b2a76c 47 hours ago 732 MB
I reproduced the same steps on my local macOS machine, and got the same problem.
I think I am doing something wrong, but not really sure what I should do to save build time.
I understand this is not a CircleCI-specific issue, but CircleCI’s document does not solve the problem I got.
Please help me, thanks!