2

I made some updates on a Dockerfile for one of the services, but the changes are not reflecting, when running docker-compose build, not even with --no-cache option.

I added two two parameter before running pip install -f requirements.txt, but they are not executed at any time: it goes directly to the requirements step.

$ docker-compose build --no-cache mongo uses an image, skipping postgres uses an image, skipping elasticsearch uses an image, skipping Building nucleo Step 1/9 : FROM python:3.6 ---> 2bb3204ab1d1 Step 2/9 : COPY core/ /container_core/ ---> cc1eadcb80a3 Step 3/9 : WORKDIR /container_core ---> Running in e8afa25b9c9a Removing intermediate container e8afa25b9c9a ---> f9b928dee6f5 Step 4/9 : RUN pip install -r requirements.txt ---> Running in 84f474edb526 ^CERROR: Aborting. 

docker-compose.yml

services: mongo: image: "mongo:4.0.5" container_name: compose_mongo restart: always environment: - MONGO_INITDB_ROOT_USERNAME=mongo - MONGO_INITDB_ROOT_PASSWORD=mongopass ports: - "27017:27017" core: build: context: /home/ivanleoncz/git/core dockerfile: Dockerfile container_name: compose_core depends_on: - mongo env_file: - .env ports: - "8000:8000" 

Dockerfile

FROM python:3.6 COPY core/ /container_core/ WORKDIR /container_core # must run before requirements RUN pip install --upgrade pip RUN pip install urllib3=1.20 # then, run the requirements RUN pip install -r requirements.txt CMD ["python3", "manage.py", "makemigrations", "app1"] CMD ["python3", "manage.py", "makemigrations", "app2"] CMD ["python3", "manage.py", "makemigrations", "app3"] CMD ["python3", "manage.py", "migrate"] CMD ["python3", "manage.py", "runserver"] 

I'm using docker-compose 1.21.2, with Ubuntu 18.04.2.

How can I guarantee that docker-compose is not using an old version of my Dockerfile, even though I'm describing that I want to perform the build, without any cache (--no-cache)?

1 Answer 1

3

I was running docker-compose build --no-cache from a different directory from the one which is defined on the tag context on docker-compose.yaml.

core: build: context: /home/ivanleoncz/git/core dockerfile: Dockerfile 

In this different directory, I was updating my Dockerfile, and on the context directory, I had an outdated the Dockerfile.

Due to the context which was defined, the /home/ivanleoncz/git/core/Dockerfile was considered during the docker-compose build --no-cache process, and not the Dockerfile from my current directory.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.