【问题标题】:docker compose not exposing portsdocker compose 不暴露端口
【发布时间】:2021-06-15 02:42:28
【问题描述】:

我有一个可以自己工作的 dockerfile,与

docker build -t image_apache .
docker run -tid -p 5000:80 --name=container_apache image_apache

这可行,我可以使用 127.0.0.1:5000 连接到它的网络服务器

但是当我尝试创建一个 docker-compose.yml 文件以使用 docker-compose 构建和运行映像时,它似乎根本没有暴露端口。

这里是 docker-compose.yaml

version: '3'

services:
  deploy_test:
    ports:
      - "8080:80"
    build: .
    working_dir: /tmp/artifacts

docker-compose 构建
docker-compose 运行 deploy_test

我的浏览器无法连接到 127.0.0.1:8080,并且容器中的 apache 日志没有显示任何尝试。

我只是对端口有错误的语法吗?它与在线样本相匹配。

【问题讨论】:

  • 嗨,我认为问题在于使用docker-compose run 命令。请检查其文档以了解端口。此外,作为替代方案,您可以尝试docker-compose up -f test.yaml。然后尝试连接到您的端口。
  • 谢谢。在命令行上添加相同的端口选项有效。在 yaml 和命令行中有端口选项似乎很奇怪。
  • 是的,这很奇怪,但正如我所说,要克服它,您可以使用up 命令而不是run
  • up 对我不起作用,但这是一个单独的问题。
  • 您想在 docker-compose 命令行中添加 -p 8080:80 并链接docs.docker.com/compose/reference/run 吗?

标签: docker-compose


【解决方案1】:

请尝试使用docker-compose run -p 8080:80 deploy_test,因为run 命令本身不能公开/发布端口,即您需要手动指定它。有关相同的更多信息,请参阅其官方文档here

【讨论】: