docker - 无法使用IP访问Docker数据库(仅本地主机)

标签 docker networking localhost

我正在尝试将Docker设置为允许来自网络上其他设备的连接。当前要访问Docker,我在计算机上访问localhost。我正在尝试使用计算机的本地IP(192.168.0.140)进行连接,这使我可以查看文件,但无法连接至数据库。

我认为这是我的配置存在问题,但是我对Docker的了解还不足以对其进行故障排除。

version: '2'

services:
  webserver:
    build: ./docker/webserver
    image: localdev
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - ./www:/var/www/html
    links:
      - db

  db:
    image: mysql:5.6
    ports:
      - 3306
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=secret

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    links:
      - db
    environment:
      PMA_HOST: db
      PMA_PORT: 3306
      MYSQL_USER: root
      MYSQL_ROOT_PASSWORD: secret
    ports:
      - '8080:80'

任何帮助将不胜感激。

最佳答案

也许您应该尝试这样:

version: '2'

services:
  webserver:
    build: ./docker/webserver
    image: localdev
    ports:
      - '0.0.0.0:80:80'   # Map container port 80 on your "public" ip on port 80, it will be available on the network 
      - '0.0.0.0:443:443' # Same for port 443 
    volumes:
      - ./www:/var/www/html
    links:
      - db

  db:
    image: mysql:5.6
    # ports:
    #  - 3306    # You don't need to map port 3306 because mysql already expose this port for others containers, unless you wan't to access to your mysql directly
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=secret

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    #links:
    #  - db # Not necessary, with docker-compose v2 every containers are in the same network and see each other
    environment:
      PMA_HOST: db
      PMA_PORT: 3306
      MYSQL_USER: root
      MYSQL_ROOT_PASS
      WORD: secret
    ports:
      - 'localhost:8080:80' # to keep your phpmyadmin only available from localhost.

关于docker - 无法使用IP访问Docker数据库(仅本地主机),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47289166/

相关文章:

linux - VM 上的 Docker Elasticsearch

c# - 与 UWP 应用程序的网络连接

linux - 如何使用外部网关在其网络中运行 docker 容器?

docker - 有什么方法可以检索最初用于创建Docker容器的命令?

bash - 如何知道 docker 容器是否以特权模式运行

javascript - 当 html 文件位于文件夹中时,CSS 无法在带有 js 的模板中工作

android - 将android phonegap应用程序连接到模拟器中的本地主机

php - 本地主机不呈现网站,仅索引,使用 mamp

java - 为什么 Maven Surefire 3 无法使用 Docker 在 Jenkins 中运行我的 Cucumber 测试?

networking - Linux 网络堆栈 : adding protocols with an LKM and dev_add_pack