在 Docker 多阶段构建中使用多个端口

Use multiple ports in Docker multistage build

我在 docker 中使用 MultiStage 来执行测试任务。 基础镜像是Selenium,暴露4444端口,暂存镜像是nginx,用于其他操作。

nginx 暴露了 80 端口。 如果我必须公开两个端口,只有 port80 被公开,而不是 4444 时使用

docker run -p 80:80 -p 4444:4444 someimage:2

Docker 文件:

FROM selenium/standalone-firefox AS base
RUN python3 try.py

FROM nginx:alpine
COPY --from=base /report.html /usr/share/nginx/html

您误解了多阶段构建的工作原理。

您的最终镜像 包含您在 Dockerfile.

中指定的每个镜像的所有内容

确实包含最后一个FROM指令中指定的图像和下面所有命令的结果的所有内容。

在你的情况下,它包含从图像 nginx:latest 和从上一个构建阶段复制的文件 report.html 的所有内容 -意味着当你将它用于 运行 一个容器时,没有任何东西在端口 4444 上监听,所以暴露它是没有意义的。