docker-compose不显示任何代码更改

dfty9e19  于 2023-04-11  发布在  Docker
关注(0)|答案(6)|浏览(206)

我正在做一个使用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"
5cnsuln7

5cnsuln71#

据我所知,docker-compose up只构建了不存在的镜像;它将不会重建源已更改的映像。如果要重建映像,请在docker-compose up之前运行docker-compose build

8i9zcol2

8i9zcol22#

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

docker-compose up --build

将重建更改层之后的所有层。对于更改之前的层,docker使用该高速缓存版本。
这避免了按照@jwodder的答案使用两个单独的命令。

tjjdgumg

tjjdgumg3#

你可以用

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

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

oyt4ldly

oyt4ldly4#

我在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重新构建了容器。之后,更改代码成功地反映在所需的容器中。

k7fdbhmy

k7fdbhmy5#

似乎很多人都不明白构建期间的ADD/COPY和对已挂载卷的更改之间的区别。如果已挂载卷中的更改似乎停止同步,我会停止容器并使用以下命令重新启动它:

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

这将重新创建卷,而不是重新加载卷

zpqajqem

zpqajqem6#

如果我们想应用我们的更改,我们不需要每次都运行docker-compose up --build。使用volume,我们可以在我们的dev目录(进行更改的地方)和docker容器中的dir之间设置绑定。

**示例:**在我的文件系统中,我的项目的工作目录是/home/user/frontend,容器内部是home/node/app,我需要做的就是像这样设置一个合适的Map:

volumes:
  - /home/user/frontend:/home/node/app

Docker将动态地从您的工作目录中获取更改。
(Windows用户应该使用带有一些DISTO的WSl来使其工作)

相关问题