从另一个容器连接到mysql容器

Con*_*sed 5 docker docker-compose docker-swarm docker-machine

我试图从撰写文件指定的同一网络上的另一个容器中连接到mysql容器。

version: "2"
services:
  web:
    build:
      context: .
      dockerfile: nginx/Dockerfile
    ports:
      - "8080:80"
    volumes:
      - ./data:/srv
  php:
    build:
      context: .
      dockerfile: php-fpm/Dockerfile
    volumes:
      - ./data:/srv
  mysql:
    image: mysql
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_USER=dummy_user
      - MYSQL_PASSWORD=12345
Run Code Online (Sandbox Code Playgroud)

我不确定如果尝试从php容器连接到mysql容器,连接参数将是什么。

具体而言,是从什么为MySQL容器的主机和端口相同的搬运工-撰写网络的另一容器?

我试过主机:mysql端口:3306,但这似乎不起作用。

Tar*_*kyy 7

您应该链接容器。将端口部分添加到mysql容器,并将链接部分添加到php容器。

version: "2"
services:
  web:
    build:
      context: .
      dockerfile: nginx/Dockerfile
    ports:
      - "8080:80"
    volumes:
      - ./data:/srv
  php:
    build:
      context: .
      dockerfile: php-fpm/Dockerfile
    links:
      - mysql:mysql
    volumes:
      - ./data:/srv
  mysql:
    image: mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_USER=dummy_user
      - MYSQL_PASSWORD=12345
Run Code Online (Sandbox Code Playgroud)

使用该配置,您将能够使用mysql:3306php访问mysql容器

一些文档:https : //docs.docker.com/compose/networking/#updating-containers


And*_*rei -1

您没有共享 mysql 端口

将 docker-compose.yml 添加到 mysql 服务:

ports:
  - "3306:3306"
Run Code Online (Sandbox Code Playgroud)

UPD

尝试设置 mysql 容器的环境

MYSQL_ROOT_PASSWORD: 123456
MYSQL_USER: dev
MYSQL_PASSWORD: 123456
MYSQL_DATABASE: myapp
Run Code Online (Sandbox Code Playgroud)

$link = mysqli_connect("mysql", "dev", "123456", "myapp");
Run Code Online (Sandbox Code Playgroud)

应该可以正常工作

  • 对于同一 Docker 网络上的共享服务来说,这是不正确的。我不会将容器暴露给主机。我想将容器暴露给同一 Docker 网络上的另一个容器。 (3认同)