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

Mar*_*dez 2 docker docker-compose ddev

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

Mar*_*dez 7

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

创建一个新docker-compose*.yaml文件:

  • 在.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
Run Code Online (Sandbox Code Playgroud)
  • 更新此文件后,保存更改并重新启动 DDEV。

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

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

我希望这有帮助。