connect to mysql container from another container

依然范特西╮ 提交于 2021-01-27 04:22:10

问题


I'm trying to connect to a mysql container from within another container on the same network specified by a compose file.

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

I'm not really sure what the connection parameters would be if I'm trying to connect to the mysql container from the php container.

Specifically, what are the host and port for the mysql container from within another container of the same docker-compose network?

I've tried host: mysql port: 3306, but that doesn't seem to work.


回答1:


You should link the containers. Add ports section to mysql container and links section to php container.

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

With that configuration you'll be able to access mysql container from php with mysql:3306

A bit of documentation: https://docs.docker.com/compose/networking/#updating-containers




回答2:


You don't share port for mysql

add to your docker-compose.yml to mysql service:

ports:
  - "3306:3306"

UPD

try to set environments of your mysql container

MYSQL_ROOT_PASSWORD: 123456
MYSQL_USER: dev
MYSQL_PASSWORD: 123456
MYSQL_DATABASE: myapp

and

$link = mysqli_connect("mysql", "dev", "123456", "myapp");

should works fine



来源:https://stackoverflow.com/questions/45738592/connect-to-mysql-container-from-another-container

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!