gpt4 book ai didi

mysql - 在 AWS Elastic Beanstalk 上使用 Docker 编写 NodeJs 和 MySQL

转载 作者:行者123 更新时间:2023-11-29 15:15:05 35 4
gpt4 key购买 nike

我有一个托管在 AWS EB Single 容器 Docker 上的 Nodejs 应用程序。目前,我通过上传 zip 文件从 AWS 控制台部署它。一切都按预期进行。我希望能够使用 CLI 将更改推送到 AWS。到目前为止,部署一直有效,直到尝试连接 MySQL。此时它失败并出现错误:

{"errno":"ECONNREFUSED","code":"ECONNREFUSED","syscall":"connect","address":"127.0.0.1","port":3306,"fatal":true}

我很确定原因是我没有 docker-compose.yml 文件。我的 Dockerfile 是:

FROM node:10.16.3 

RUN mkdir /opt/app
WORKDIR /opt/app
COPY package.json package-lock.json ./

RUN npm cache clean --force && npm install

COPY . /opt/app

ENV PORT 80
EXPOSE 80

CMD [ "npm", "start" ]

和.js连接MySQL:

var mysql= require('promise-mysql');
var util = require('util')
require('dotenv').config();

var pool = mysql.createPool({
connectionLimit : process.env.DB_CONLIMIT,
host : process.env.DB_HOST,
user : process.env.DB_USER ,
password : process.env.DB_PASSWORD ,
database : process.env.DB_DATABASE,
})
pool.getConnection((err, connection) => {
if (err) {
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
console.error('Database connection was closed.')
}
if (err.code === 'ER_CON_COUNT_ERROR') {
console.error('Database has too many connections.')
}
if (err.code === 'ECONNREFUSED') {
console.error('Database connection was refused.')
}
}else{
console.log('MySQL Connected!')
}
if (connection) connection.release()
return
})
pool.query = util.promisify(pool.query)
module.exports = pool

我很感谢有关如何正确构建 docker-compose.yml 的任何指导。我在网上浏览了几个教程,但仍然有点困惑,而且其中一些教程已经有好几年了,我想使用当前的最佳实践。

提前致谢。

最佳答案

尝试使用以下 docker-compose.yml 文件运行 docker-compose up:

version: "3.3"

services:
example_service:
build: .

说明:

example_service 是您正在启动的服务的名称。该名称可以是您想要的任何名称,只是不要包含特殊字符之类的内容。

build: . 表示 Dockerfile 与 docker-compose.yml 文件位于同一目录中。

关于mysql - 在 AWS Elastic Beanstalk 上使用 Docker 编写 NodeJs 和 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59740192/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com