码头工人更改图像名称?
我正在通过 docker compose 创建一个图像,但由于某种原因,名称被翻了一番?
一切都很好,没有问题,但图像名称看起来像“poc_tool_poc_tool” 如何更改名称?或添加版本控制?
码头工人:
c70753c4553e poc_tool_poc_tool "streamlit run --ser…" 17 minutes ago Up 11 minutes 0.0.0.0:8889->8889/tcp poc_tool_poc_tool_1
该项目构建如下:
- poc_tool
- app1
- app2
- app3
- docker-compose.yml
- Dockerfile
Dockerfile:
FROM python:3.8-slim-buster AS build
COPY app3 /app
COPY app1/src /app/src
COPY app2 /app/app2
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 8889
ENTRYPOINT ["streamlit","run","--server.port","8889"]
CMD ["app.py"]
码头工人组成:
version: "3"
services:
poc_tool:
build: .
volumes:
...
ports:
- "8889:8889"
回答
Compose 为大多数事情生成自己的名称,它通常通过将项目名称(默认情况下,当前目录的名称)与docker-compose.yml文件中的名称组合来实现。如果查看docker ps输出,您可能会看到一个名为poc_tool_poc_tool_1;的容器。如果你看docker network ls,你会看到poc_tool_default;如果您命名了卷,它们也会有这个前缀。
在docker-compose.yml文件中,同时指定build:和是有效的image:。如果这样做,则docker-compose build使用image:名称而不是生成自己的名称。
version: "3"
services:
poc_tool:
build: .
image: registry.example.com/name/poc_tool:${TAG:-latest}
(风格方面,这意味着您通常不需要将项目名称作为 Compose 服务名称的一部分。这也意味着不要将其命名image:为 Dockerfile 的基本映像很重要,因为 Compose 会很乐意用您的应用程序代码。)