【问题标题】:Docker for Mac Host NetworkingDocker for Mac 主机网络
【发布时间】:2023-03-22 19:09:01
【问题描述】:

我正在使用 Docker for Mac。我有两个容器。

第一个:一个 PHP 应用程序正在尝试将 localhost:3306 连接到 MySQL。

第二个:MySQL

当使用链接运行时,它们能够相互访问。

但是,我想避免更改 PHP 应用程序中的任何代码(例如,将 localhost 更改为“mysql”)并继续使用 localhost。

主机网络似乎可以解决问题,但问题是,当我启用主机网络时,我无法访问主机 mac 上端口 80 上的 PHP 应用程序。

如果我 docker exec -it 进入 php 应用程序并 curl localhost,我会看到 HTML,所以看起来端口只是没有转发到主机?

【问题讨论】:

  • 你能发布你的 docker 命令吗?使用 docker run -p localport:docker-port 转发端口 - 看看docs.docker.com/engine/reference/run/#expose-incoming-ports
  • @lumos0815 我正在使用 docker compose,但对于您的示例,请尝试启用主机网络,看看您是否可以从您的主机访问该端口

标签: docker docker-compose docker-networking


【解决方案1】:

这是 docker-compose 的一个例子 它在一个容器中运行 mysql,在另一个容器中运行 phpmyadmin 容器连接在一起 您可以通过端口上的主机访问容器 3316 和 8889

my_mysql:
  image: mysql/mysql-server:latest
  container_name: my_mysql
  environment:
    - MYSQL_ROOT_PASSWORD=1234
    - MYSQL_DATABASE=test
    - MYSQL_USER=test
    - MYSQL_PASSWORD=test
  ports:
    - 3316:3306
  restart: always

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: my_myadmin
    links:
     - my_mysql:my_mysql
    environment:
     - PMA_ARBITRARY=0
     - PMA_HOST=my_mysql
    ports:
     - 8889:80
    restart: always

【讨论】:

  • 在这个例子中,它使用的是桥接网络,我的问题是当主机网络启用时。可以试试吗?
猜你喜欢
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 2017-02-27
  • 2021-04-14
  • 2017-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多