【问题标题】:Use multiple ports in Docker multistage build在 Docker 多阶段构建中使用多个端口
【发布时间】:2020-09-01 12:34:41
【问题描述】:

我在 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

【问题讨论】:

    标签: docker selenium nginx dockerfile docker-machine


    【解决方案1】:

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

    您的最终图像包含您在 Dockerfile 中指定的每个图像的所有内容。

    确实包含上一条FROM 指令中指定的图像和以下所有命令的结果中的所有内容。

    在您的情况下,它包含从图像 nginx:latest 和文件 report.html 中从先前构建阶段复制的所有内容 - 这意味着当您使用它来运行容器时4444端口没有监听,暴露是没有意义的。

    【讨论】:

    • 还有其他方法可以实现吗?作为一种解决方法,我已经安装了 nginx 并设置了多个端口
    • 您可以创建包含 Selenium 和 nginx 的自定义镜像。除此之外 - 不,没有办法组合多个 Docker 映像。
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多