首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从本地和码头容器对mysql进行快速/节点测试调用

从本地和码头容器对mysql进行快速/节点测试调用
EN

Stack Overflow用户
提问于 2022-07-16 13:36:11
回答 1查看 22关注 0票数 0

我正试图通过能够直接在本地运行我的代码,然后部署到容器中,然后通过容器测试它,从而使日常开发变得更容易。我使用的是一个简单的Express/NodeJS应用程序,它使用直接使用节点的本地运行和通过容器运行的对接器连接到本地mysql实例。

本地

当我创建这个配置通过本地连接到MYSQL时,我能够很好地连接(使用localhost作为主机)。

代码语言:javascript
运行
复制
const connection = mysql.createConnection({
    host: 'localhost',
    port: 3306,
    user: 'user',
    password: 'user-password'
});

使用node server.js

本地使用码头

当我创建这个配置来通过我的本地连接到MYSQL时,我能够很好地连接(my-db是我的docker-come.yml中的mysql服务名称,因为我不能使用localhost

代码语言:javascript
运行
复制
const connection = mysql.createConnection({
    host: 'my-db',
    port: 3306,
    user: 'user',
    password: 'user-password'
});

使用docker-compose run <myimage>

问题

在本地运行节点服务器时,我必须不断地更改连接代码,以便在localhost和my-db之间切换,而不是通过docker-组合运行运行。有什么方法可以让connection不知道我是如何运行服务器的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-16 15:57:37

这是对环境变量的一个很好的使用。我发现一个很好的设置是通过环境变量使这样的主机名可配置,返回到默认设置,对于那些可能没有设置它们的开发人员来说是有意义的。

代码语言:javascript
运行
复制
const connection = mysql.createConnection({
    host: process.env.MYSQL_HOST || 'localhost',
    port: process.env.MYSQL_PORT || 3306,
    ...
});

如果您只是npm run start您的应用程序而没有设置这些环境变量,您将得到这些默认值。但是在Docker设置中,很容易指定它们;例如在编写

代码语言:javascript
运行
复制
version: '3.8'
services:
  database:
    image: mysql:8
  application:
    build: .
    environment:
      - MYSQL_HOST=database

如果要将数据库部署到具有自己备份策略的单独主机上,或者部署到云托管数据库(如Amazon )上,则此设置还可以帮助您部署到生产环境中;您只需将$MYSQL_HOST设置为指向数据库主机名,而无需更改代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73004653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档