Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

docker-compose not showing any changes to code

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"
like image 331
eignhpants Avatar asked Jul 31 '15 15:07

eignhpants


People also ask

How do I refresh Docker compose up?

Usage: compose-update [OPTIONS] [UPDATE_DIRS]... Update docker-compose images automatically. Takes one or more directorys as input and searches for a compose file in one of the following forms: "compose. yaml", "compose.

Does Docker compose update?

Docker Compose v2 is now the stable version of Docker Compose. Docker Desktop users will have been upgraded automatically. Linux installations of Docker Engine are catered for by the new docker-compose-plugin CLI plugin.

Does Docker compose up rebuild images?

If the container requires to build an image, the run command also builds the container but it doesn't have to rebuild the image. docker run does not build either. docker-compose up does everything so you have the option to rebuild.

Is Docker compose deprecated?

Following the deprecation of Compose on Kubernetes, support for Kubernetes in the stack and context commands in the docker CLI is now marked as deprecated as well.


4 Answers

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.

like image 200
jwodder Avatar answered Sep 28 '22 05:09

jwodder


To force the image to be rebuilt after a change in the source, use the --build flag:

docker-compose up --build

will rebuild all layers after the layer with the changes. For layers before the change, docker uses the cache versions.

This avoids having to use two separate commands as per @jwodder's answer.

like image 28
lionbigcat Avatar answered Sep 30 '22 05:09

lionbigcat


You can use

$ docker-compose build --no-cache
$ docker-compose up --force-recreate

taken from https://vsupalov.com/docker-compose-runs-old-containers/

like image 31
Rajshree Rai Avatar answered Sep 28 '22 05:09

Rajshree Rai


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.

like image 26
Abdollah Avatar answered Sep 28 '22 05:09

Abdollah