docker-compose未显示对代码的任何更改

时间:2015-07-31 15:55:57

标签: docker docker-compose

我正在开发一个使用docker-compose up启动和运行的项目。我对docker-compose不太熟悉,我无法在文档中找到答案。根据文档,up命令从docker文件重建容器,但这似乎不会发生。

当我尝试添加print命令进行调试时,没有任何反应。该程序已经抛出了一些打印命令,我尝试更改这些命令,并且它们总是打印相同的。我是否必须在up命令中添加一些内容才能使容器重建?

搬运工-撰写/ YML:

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

5 个答案:

答案 0 :(得分:7)

据我所知,docker-compose up只构建不存在的图像;它不会重建源已更改的图像。如果您想重建图片,请在docker-compose build之前运行docker-compose up

答案 1 :(得分:3)

要在源更改后强制重建映像,请使用 --build 标志:

docker-compose up --build

将在具有更改的图层之后重建所有图层。对于更改前的图层,docker 使用缓存版本。

这避免了必须按照@jwodder 的回答使用两个单独的命令。

答案 2 :(得分:3)

你可以使用

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

取自 https://vsupalov.com/docker-compose-runs-old-containers/

答案 3 :(得分:0)

在CentOS 7上,我对Docker 1.3版和Docker Compose 1.22版有类似的问题。我可以通过升级到Docker 18.06版来解决此问题。为此,我采取了以下步骤。首先,我通过运行以下命令删除了旧版本的Docker:

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 \

然后,我设置了必需的存储库:

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

并最终安装了最新的CE版本:

sudo yum install docker-ce

升级Docker之后,我通过运行以下命令删除了基于旧版本Docker构建的容器:

sudo docker container rm -f -v my_container_1 my_container_2

运行docker-compose up重建了容器。之后,更改代码成功地反映在所需的容器中。

答案 4 :(得分:0)

似乎很多人在构建过程中的 ADD/COPY 和对已安装卷的更改之间没有区别。如果已安装卷中的更改似乎停止同步,我会停止容器并使用以下命令重新启动它:

docker-compose stop <container>
docker-compose up -Vd <container>

它重新创建卷而不是重新加载它们