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"
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.
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.
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.
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.
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
.
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.
You can use
$ docker-compose build --no-cache
$ docker-compose up --force-recreate
taken from https://vsupalov.com/docker-compose-runs-old-containers/
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With