У меня есть приложение Nodejs, которое размещено в AWS EB Один контейнер Docker. Сейчас я развертываю его с консоли AWS, загружая zip-файл. Все работает как положено. Я хотел бы иметь возможность изменить sh на AWS с помощью CLI. Пока развертывание работает до попытки 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. Я просмотрел несколько онлайн-уроков, но все еще немного запутался, к тому же некоторым из них уже несколько лет, и я хотел бы использовать текущие лучшие практики.
Заранее спасибо.