问题描述
我正在docker中使用MultiStage来执行测试任务。 基本映像是Selenium,它暴露了端口4444,而暂存映像是Nginx,用于其他操作。
Nginx的端口80已暴露。 如果必须同时暴露两个端口,则仅暴露port80,而使用时则不暴露4444
docker run -p 80:80 -p 4444:4444 someimage:2
Dockerfile:
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上没有任何监听,因此公开它毫无意义。