如何解决在Docker多阶段构建中使用多个端口
我正在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上没有任何监听,因此公开它毫无意义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。