docker-compose not showing any changes to code

2019-02-24 09:07发布

问题:

I am working on a project that uses docker-compose up to start up and run. I am not very familiar with docker-compose and I couldn't really find an answer in the docs. According to the docs the up command rebuilds the container from the docker file, however this does not seem to happen.

When I try to add print commands for debugging nothing happens. The program already throws a few print commands and I tried changing those to be sure, and they always print the same. Do I have to add something to the up command to make the container rebuild?

docker-compose/yml:

dockbrato:
  build: .
  volumes:
    - "/sys:/sys"
    - "/var/run/docker.sock:/var/run/docker.sock"

回答1:

As far as I can tell, docker-compose up only builds images that don't exist already; it will not rebuild an image whose source has changed. If you want to rebuild your image, run docker-compose build before docker-compose up.



回答2:

I had a similar problem with Docker version 1.3 and Docker Compose version 1.22 on CentOS 7. I could resolve the problem by upgrading to Docker version 18.06. To do this, I took the following steps. First, I removed the old version of Docker by running the following command:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \

Then, I set up required repositories:

sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

and finally installed the latest CE version:

sudo yum install docker-ce

After upgrading Docker, I removed containers built based on the old version of Docker by running this command:

sudo docker container rm -f -v my_container_1 my_container_2

Running docker-compose up rebuilt the containers. Afterward, changing the code was successfully reflected in the desired container.