mysql - 在 Docker 中配置 mysql

标签 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

请帮忙。谢谢

最佳答案

使用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"
  • 您可以使用主机 mysql 连接到 mysql 容器 客户端(Mysql Workbench、SequelPro ..etc),主机:localhost; 端口:33061。然后您可以在那里创建模式!
  • 如果你想持久化你的mysql容器的数据, 您可以添加卷,请确保创建 my_mysql_data 文件夹

关于mysql - 在 Docker 中配置 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52801207/

相关文章:

php - MySQL、PHP - 动态产品功能的搜索引擎(在另一个表中)

php - 在一行中左连接两个值

Docker 通过 ssh 连接到远程守护进程 - 权限被拒绝(公钥)

python - django makemigrations 中的操作错误 1050 错误 “Table already exists”

mysql - 我需要一种在 MySQL 中使用列值作为列名的方法

php - 多个表的 COUNT() 相加和相乘

docker -/mnt/d 上的 WSL2 Docker(撰写)非常慢

docker - 在Docker集群中使用Eureka副本进行微服务注册

docker - 我们如何使用dpkg在dockerfile中的 Alpine 图像上安装google-chrome-stable?

mysql - 无法在 Docker 上加载 Artifactory