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

eig*_*nts 5 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"
Run Code Online (Sandbox Code Playgroud)

lio*_*cat 27

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

docker-compose up --build
Run Code Online (Sandbox Code Playgroud)

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

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


Raj*_*Rai 13

您可以使用

$ docker-compose build --no-cache
$ docker-compose up --force-recreate
Run Code Online (Sandbox Code Playgroud)

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


jwo*_*der 7

据我所知,docker-compose up只构建已经不存在的图像; 它不会重建源已更改的图像.如果要重建图像,docker-compose build请先运行docker-compose up.

  • docker-compse up --build 将两者结合起来 (5认同)
  • 但是 `volumes` 意味着将它安装到 docker 容器,所以我不应该重建?[这篇文章甚至说它应该显示实时更改](http://blog.carbonfive.com/2015/03/17/docker-rails-docker-compose-together-in-your-development-workflow/)。我很想知道为什么它不起作用。我的老板这样做是为了在通过 docker 运行数据库时使数据保持一致。并且音量会实时变化。 (2认同)