Docker错误连接到主机mysql

时间:2017-06-01 15:03:28

标签: docker docker-compose dockerfile

Docker版本17.03.1-ce,构建c6d412e 操作系统:Ubuntu

我正在尝试从docker容器连接到主机mysql。但是我收到了这个错误。

错误:连接ECONNREFUSED 0.0.0.0:3306

如果我使用mysql容器,我的mysql会变得相同。尝试了127.0.0.1和localhost。

version: '2'

services:

### Applications Code Container 
#############################

  applications:
    image: tianon/true
    volumes:
      - ${APPLICATION}:/var/www/html

  apache2:
    build:
      context: ./apache2
    volumes_from:
      - applications
    volumes:
      - ${APACHE_HOST_LOG_PATH}:/var/log/apache2
      - ./apache2/sites:/etc/apache2/sites-available
    ports:
      - "${APACHE_HOST_HTTP_PORT}:80"
      - "${APACHE_HOST_HTTPS_PORT}:443"
    networks:
      - frontend
      - backend

  node:
    build:
      context: ./node
    volumes_from:
      - applications
    ports:
      - "4000:30001"
    networks:
      - frontend
      - backend    


### MySQL Container  #########################################

  mysql:
    build:
      context: ./mysql
    environment:
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    volumes_from:
      - applications  
    volumes:
      - ${DATA_SAVE_PATH}/mysql:/var/lib/mysql
      - ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
    ports:
      - "${MYSQL_PORT}:3306"
    networks:
      - backend


### Networks Setup ############################################

networks:
  frontend:
    driver: "bridge"
  backend:
    driver: "bridge"

### Volumes Setup #############################################

volumes:
  mysql:
    driver: "local"
  mongo:
    driver: "local"
  node:
    driver: "local"
  apache2:
    driver: "local"

1 个答案:

答案 0 :(得分:0)

您应该使用主机的IP,而不是使用0.0.0.0,127.0.0.1或localhost。这是因为每个容器都是网络中的单个节点。

或者,如果您可以检查MySQL容器并获取其IP,您也可以使用IP,因为它们位于同一网络上。