Docker 新手在这里,所以我的术语可能略有偏差,但我正在努力使其正确。 我目前有 2 个基于 python 的独立项目,每个项目都有自己的docker-compose.yml文件,我希望其中一个包含在另一个中。 (问题?)我感到困惑的是,它们各自在单独运行时使用相同的端口/依赖项,所以在组合 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我试图让 docker-compose 到:
我发现我必须在该服务的 Dockerfile 上执行docker build
,然后对要使用的新图像执行docker-compose up <service-name>
。
有没有办法只使用 docker-compose 来做到这一点?
下面是我为获得要在 docker-compose 中使用的新图像而采取的漫长曲折路径。
这是当前的 docker-compose 设置。
Container Repository Tag Image Id Size
-----------------------------------------------------------------------
books-server books-server v06 c35c65375942 13.37 MB
hasura-proxy hasura/graphql-engine v1.3.2 a499c4b91ba4 48.34 MB
nginx-proxy jwilder/nginx-proxy latest fcb5a96e19c1 160.6 MB
postgres postgres 12 7b9cf7d827b4 314 MB
我对books-server进行了更改,底层源代码被编译成可执行文件,我希望重建该图像并在 docker-compose 中使用。
如果我发出:
> docker-compose up --detach --build books-server
结果:
books-server is up-to-date
尝试:
> docker-compose build --no-cache books-server
结果:
books-server uses an image, skipping
尝试:
> docker-compose up --build --no-deps --force-recreate -d books-server
结果:
Recreating books-server ... done
查看:
> docker-compose images
结果
Container Repository Tag Image Id Size
-----------------------------------------------------------------------
books-server books-server v06 c35c65375942 13.37 MB
hasura-proxy hasura/graphql-engine v1.3.2 a499c4b91ba4 48.34 MB
nginx-proxy jwilder/nginx-proxy latest fcb5a96e19c1 160.6 MB
postgres postgres 12 7b9cf7d827b4 314 MB
图书服务器的图像 id 仍然是c35c65375942
尝试:
> docker-compose restart books-server
Restarting books-server ... done
检查图像:
仍在使用图像 ID c35c65375942
> docker-compose images
Container Repository Tag Image Id Size
-----------------------------------------------------------------------
books-server books-server v06 c35c65375942 13.37 MB
hasura-proxy hasura/graphql-engine v1.3.2 a499c4b91ba4 48.34 MB
nginx-proxy jwilder/nginx-proxy latest fcb5a96e19c1 160.6 MB
postgres postgres 12 7b9cf7d827b4 314 MB
尝试:
我更改为 books-server 目录,使用相同的标签( books-server:v06
)在其 Dockerfile 上执行 docker 构建
> cd ..\books-server\
> docker build -t books-server:v06 .
结果:
构建一个新图像55ea56a70aa9
并标记
Sending build context to Docker daemon 73.43MB
Step 1/21 : FROM google/dart-runtime-base AS dart-runtime
...<snip>...
Removing intermediate container bff4c43f6bf0
---> 55ea56a70aa9
Successfully built 55ea56a70aa9
Successfully tagged books-server:v06
我检查docker images
:
并看到标签已从图像c35c65375942
中删除并提供给55ea56a70aa9
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> d50d6ccf14a1 About a minute ago 798MB
books-server v06 55ea56a70aa9 About a minute ago 13.4MB
<none> <none> c35c65375942 31 minutes ago 13.4MB
我检查docker-compose images
:
Container Repository Tag Image Id Size
-----------------------------------------------------------------------
books-server <none> <none> c35c65375942 13.37 MB
hasura-proxy hasura/graphql-engine v1.3.2 a499c4b91ba4 48.34 MB
nginx-proxy jwilder/nginx-proxy latest fcb5a96e19c1 160.6 MB
postgres postgres 12 7b9cf7d827b4 314 MB
图书服务器仍在使用旧图像,现在匿名运行,因为图像标签已被重新分配为55ea56a70aa9
我尝试在 docker-compose 中重新启动服务:
> docker-compose restart books-server
Restarting books-server ... done
我检查了 docker-compose 图像,发现旧图像c35c65375942
仍在使用中。
Container Repository Tag Image Id Size
-----------------------------------------------------------------------
books-server <none> <none> c35c65375942 13.37 MB
hasura-proxy hasura/graphql-engine v1.3.2 a499c4b91ba4 48.34 MB
nginx-proxy jwilder/nginx-proxy latest fcb5a96e19c1 160.6 MB
postgres postgres 12 7b9cf7d827b4 314 MB
我重新启动 docker-compose 并最终看到正在使用的新图像( 55ea56a70aa9
):
> docker-compose up -d books-server
Recreating books-server ... done
> docker-compose images
Container Repository Tag Image Id Size
-----------------------------------------------------------------------
books-server books-server v06 55ea56a70aa9 13.37 MB
hasura-proxy hasura/graphql-engine v1.3.2 a499c4b91ba4 48.34 MB
nginx-proxy jwilder/nginx-proxy latest fcb5a96e19c1 160.6 MB
postgres postgres 12 7b9cf7d827b4 314 MB
Is there a docker-compose
command that can rebuild the service image and restart that service or must it be done using a docker build Dockerfile
and docker-compose up <service>
?
感谢您的任何见解。
感谢 timsmelik 评论,我意识到我没有在 docker-compose.yml 的books-server
服务中使用build:
指令,并且只有一个标记的图像名称,docker-compose 在生产新版本时不容易替换/使用。
删除image:
指令并将其替换为相对build:
目标,一个简单的docker-compose up --build -d books-server
正在重建服务并在 docker-compose 项目中使用它。
books-server:
# ↓ new build directive
build: ../books-server
# ↓ old image directive, removed
# image: books-server:v06
container_name: books-server
<other settings>...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.