欢迎光临
我们一直在努力

无法使用链接的mysql数据库在docker中启动应用程序

本站教程收集整理的这篇文章主要介绍了无法使用链接的mysql数据库在docker中启动应用程序,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用docker运行我的nodejs应用程序,只有几个数据库,其中一个是mysql.

我在docker hub上找到了MysqL镜像,并在docker-compose.yml中使用它

app:
  build: .
  volumes:
    - ./:/var/www/app/
  working_dir: /var/www/app/
  command: node app.js
  ports:
    - "3000:3000"
  links:
    - mongo
    - elasticsearch
    - MysqL

MysqL:
  image: MysqL
  environment:
    MysqL_DATABASE: testdb

mongo:
  image: mongo

elasticsearch:
  image: elasticsearch

所有构建和应用程序使用MysqL conenction配置,如下所示:

@H_578_6@mysqL: {
      host: 'localhost',
      user: 'root',
      password: '',
      database: 'testdb'
    }

应用程序尝试启动和停止MysqL连接错误.

Error: connect ECONNREFUSED 127.0.0.1:3306

我想知道docker MysqL图像是否可以通过compose文件链接到app容器.请解释如何正确链接MysqL容器.

提前致谢!

我自己的答案

当您使用任何类型的链接其他容器(external_link或link)时,您可以根据容器的名称在应用程序配置文件中设置进程环境变量

process.env.<container_name>_PORT_<container_port>

SailsJS到Mongo示例:

我有一个名为mongo_dev的容器,它在我的docker compose文件中连便宜美国vps接为

external_links:
  - mongo_dev

所以在我的应用程序配置中使用这样的环境变量:

@H_578_6@mongo: {
      module   : 'sails-mongo',
      host     : process.env.MONGO_DEV_PORT_27017_TCP_ADDR || 'localhost',
      port     : process.env.MONGO_DEV_PORT_27017_TCP_PORT || '27017',
      user     : null,
      password : null,
      database : 'database_name'
    }

解决方法:

链接的MysqL容器将是你的MysqL主机

@H_578_6@mysqL: { host: 'MysqL', user: 'root', password: '', database: 'testdb' }

您将看到所有链接主机都在/ etc / hosts中命名,如:

172.17.0.2  composetest_R_452_11845@ysqL_1 fffb39e63df6
172.17.0.2  MysqL fffb39e63df6 composetest_R_452_11845@ysqL_1
172.17.0.2  MysqL_1 fffb39e63df6 composetest_R_452_11845@ysqL_1

本站总结

以上是本站教程为你收集整理的无法使用链接的mysql数据库在docker中启动应用程序全部内容,希望文章能够帮你解决无法使用链接的mysql数据库在docker中启动应用程序所遇到的程序开发问题。

如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。