k0pernikus
k0pernikus

Reputation: 66500

Why is docker-compose ignoring changes to the Dockerfile?

I have made changes in my Dockerfile and yet when I run either

docker-compose up
dock-compose rm && docker-compose build && docker-compose up

an old image is used, as the shown steps states are outdated.

I specifically tell it to build the container in the docker-compose.yml:

my-app:
    build: ./
    hostname: my-app
    ...

Yet when I build the container just via docker:

docker build .

The right container is built. What am I missing? I have tried this to no avail.

Upvotes: 0

Views: 2037

Answers (2)

rustyMagnet
rustyMagnet

Reputation: 4085

I had the same question but my answer was different.

I moved from a large nginx image to a slim, Alpine nginx image.

I thought docker compose was ignoring my Dockerfile as the error looked like it had not copied a script. The error was:

/bin/sh: /usr/bin/start.sh: not found

Well, the file was there. The file had the correct permissions. All I needed to do was to resolve the wrong shebang in my script and all worked with docker-compose:

#!/bin/sh              WORKED

#!/bin/bash            FAILED

Upvotes: 1

k0pernikus
k0pernikus

Reputation: 66500

Check what dockerfile is configured in your docker-compose.yml.

My app has two dockerfiles, and docker-compose used a different one than docker itself, as it should:

my-app:
    build: ./
    dockerfile: Dockerfile.dev

Adapting that dockerfile as well fixed the problem.

And, oh, if you are using multiple dockerfiles, it's nice to add that in the project's documentation.

Upvotes: 1

Related Questions