使用 Docker Compose 将 DDEV Web 容器端口公开给主机

2023-12-01

我已经配置了 DDEV Drupal 环境,需要在其中为我的主题运行 Pattern Lab。这个环境将由我的学生使用,他们可能不熟悉在本地计算机上安装 Node 或 Node 依赖工具(Pattern Lab 需要 Node)。作为解决方法,我将 Pattern Lab 设置为在 DDEV 的 Web 容器中运行。我遇到的问题是,由于 Pattern Lab 在 DDEV 容器中运行,我无法在我的主机上访问它。有没有人做过类似的事情来将 Docker 端口暴露给主机?


在底层,DDEV 使用 docker-compose 来定义和运行构成项目本地环境的多个容器。 docker-compose 支持定义多个 compose 文件,以方便在文件和项目之间共享 Compose 配置,DDEV 旨在利用此功能。以下是我为解决此问题所采取的步骤:

创建一个新的docker-compose*.yaml file:

  • Inside .ddev/我创建了一个名为docker-compose.patternlab.yaml。文件名的第二部分(patternlab),可以是任何你想要的。使用与您尝试实现的操作、应用程序或服务相关的名称是有意义的。
  • 我添加了下面的代码,将 Web 容器的端口 3000 暴露给主机的端口 3000 (https) 和 3001(http):
# Override the web container's standard HTTP_EXPOSE and HTTPS_EXPOSE services
# to expose port 3000 of DDEV's web container.
version: '3.6'
services:
  web:
    # ports are a list of exposed *container* ports
    ports:
      - "3000"
    environment:
      - HTTP_EXPOSE=${DDEV_ROUTER_HTTP_PORT}:80,${DDEV_MAILHOG_PORT}:8025,3001:3000
      - HTTPS_EXPOSE=${DDEV_ROUTER_HTTPS_PORT}:80,${DDEV_MAILHOG_HTTPS_PORT}:8025,3000:3000
  • 更新此文件后,保存更改并重新启动 DDEV。

现在,我可以通过访问我的站点 URL 并根据我使用的协议附加端口 3000 或 3001 来访问我的主机中的 Pattern Lab。像这样:https://mysite.ddev.site:3000 or http://mysite.ddev.site:3001.

有关使用 docker compose 定义新服务的更多信息,阅读 DDEV 文档.

我希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Docker Compose 将 DDEV Web 容器端口公开给主机 的相关文章

随机推荐