docker-compose 未显示对代码的任何更改
docker-compose not showing any changes to code
我正在开发一个使用 docker-compose up
启动和 运行 的项目。我对 docker-compose 不是很熟悉,我在文档中找不到真正的答案。根据文档,up
命令从 docker 文件重建容器,但这似乎并没有发生。
当我尝试添加 print
命令进行调试时,没有任何反应。该程序已经抛出了一些打印命令,我尝试更改这些命令以确保它们始终打印相同。我是否必须向 up
命令添加一些内容才能重建容器?
docker-compose/yml:
dockbrato:
build: .
volumes:
- "/sys:/sys"
- "/var/run/docker.sock:/var/run/docker.sock"
据我所知,docker-compose up
只构建不存在的图像;它不会重建源已更改的图像。如果你想重建你的形象,运行 docker-compose build
在 docker-compose up
.
之前
我在 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
重建容器。之后,修改代码成功反映到想要的容器中。
要在源更改后强制重建映像,请使用 --build
标志:
docker-compose up --build
将在更改图层之后重建所有图层。对于更改前的图层,docker 使用缓存版本。
这避免了必须按照@jwodder 的回答使用两个单独的命令。
您可以使用
$ docker-compose build --no-cache
$ docker-compose up --force-recreate
似乎很多人不明白 ADD/COPY 在构建过程中和对已安装卷的更改之间的区别。如果已安装卷中的更改似乎停止同步,我将停止容器并使用以下命令重新启动它:
docker-compose stop <container>
docker-compose up -Vd <container>
重新创建卷而不是重新加载它们
我正在开发一个使用 docker-compose up
启动和 运行 的项目。我对 docker-compose 不是很熟悉,我在文档中找不到真正的答案。根据文档,up
命令从 docker 文件重建容器,但这似乎并没有发生。
当我尝试添加 print
命令进行调试时,没有任何反应。该程序已经抛出了一些打印命令,我尝试更改这些命令以确保它们始终打印相同。我是否必须向 up
命令添加一些内容才能重建容器?
docker-compose/yml:
dockbrato:
build: .
volumes:
- "/sys:/sys"
- "/var/run/docker.sock:/var/run/docker.sock"
据我所知,docker-compose up
只构建不存在的图像;它不会重建源已更改的图像。如果你想重建你的形象,运行 docker-compose build
在 docker-compose up
.
我在 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
重建容器。之后,修改代码成功反映到想要的容器中。
要在源更改后强制重建映像,请使用 --build
标志:
docker-compose up --build
将在更改图层之后重建所有图层。对于更改前的图层,docker 使用缓存版本。
这避免了必须按照@jwodder 的回答使用两个单独的命令。
您可以使用
$ docker-compose build --no-cache
$ docker-compose up --force-recreate
似乎很多人不明白 ADD/COPY 在构建过程中和对已安装卷的更改之间的区别。如果已安装卷中的更改似乎停止同步,我将停止容器并使用以下命令重新启动它:
docker-compose stop <container>
docker-compose up -Vd <container>
重新创建卷而不是重新加载它们