在Docker中配置mysql

时间:2018-10-14 09:18:01

标签: mysql docker

我真的是Docker的新手。我想用docker部署我的应用程序,并使用docker-compose来管理我的数据库(建立连接,建立初始架构)。但是我真的很困惑如何实现这一目标。这是我的配置代码:

docker-compose.yml

version: '3'
services:
  db:
    image: mysql
    environment:
      MYSQL_DATABASE: currency
      MYSQL_USER: root
      MYSQL_PASSWORD: ''
    ports:
      - "33061:3306"
  web:
    build: .
    volumes:
      - .:/code
    ports:
      - "3000:3000"
    depends_on:
      - db

当我运行docker-compose up时,它拒绝连接数据库:

errno: 'ECONNREFUSED',
web_1  |   code: 'ECONNREFUSED',
web_1  |   syscall: 'connect',
web_1  |   address: '127.0.0.1',
web_1  |   port: 3306,
web_1  |   fatal: true

请帮助。谢谢

1 个答案:

答案 0 :(得分:0)

使用 docker networks ,然后将容器放入该网络。这样他们就可以互相交谈。在您的容器中,您可以通过其DNS名称来调用每个容器,在Web容器中,您可以将mysql主机简称为db。请在docker-compose.yml文件下面查看

version: '3'
services:
  db:
    image: mysql
    environment:
        MYSQL_DATABASE: currency
        MYSQL_USER: root
        MYSQL_PASSWORD: ''
    ports:
    - "33061:3306"
    networks:
    - appnet
    volumes:
    -./my_mysql_data:/var/lib/mysql
  web:
    build: .
    volumes:
    - .:/code
    ports:
    - "3000:3000"
    depends_on:
    - db
    networks:
    - appnet
networks:
  appnet:
    driver: "bridge"
  • 您可以使用 host mysql连接到mysql容器 host: localhost; port:33061的客户端(Mysql Workbench,SequelPro ..etc)。然后,您可以在那里创建架构!
  • 如果您要保留mysql容器的数据, 您可以添加卷,请确保创建 my_mysql_data 文件夹