У меня есть сервер узлов, который пытается подключиться к базе данных postgres, используя knex . Оба находятся в docker контейнерах с одной и той же пользовательской сетью. Я продолжаю получать сообщения ECONNREFUSED. Я покопался в контейнере базы данных и вижу, что моя БД (test_db
) была создана psql, но у нее нет разрешений. После предоставления разрешений root
у меня все те же проблемы. Я попытался удалить тома с помощью docker-compose down -v
, но все равно не повезло. Я также попытался удалить knex и просто использовать node- postgres, но те же ошибки. Я также не могу подключиться к БД с хоста с помощью pgadmin. Буду признателен за любую помощь!
Вот мой docker -compose.yml
version: "3"
services:
server:
build:
context: .
dockerfile: development.Dockerfile
ports:
- "8081:8081"
volumes:
- .:/src
- /src/node_modules
networks:
- dev-network
environment:
DB_HOSTNAME: pg-development
DB_USER: root
DB_PASSWORD: helloworld
DB_PORT: 3306
DB_NAME: test_dev
depends_on:
- pg-development
pg-development:
image: postgres
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: helloworld
POSTGRES_DB: test_dev
ports:
- "3308:3306"
volumes:
- dbdata:/data/db
networks:
- dev-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U root -d test_dev"]
interval: 10s
timeout: 2s
retries: 10
networks:
dev-network:
driver: bridge
volumes:
dbdata:
Вот мой БД
import knex from "knex";
const connection = {
host: process.env.DB_HOSTNAME,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
port: Number(process.env.DB_PORT),
database: process.env.DB_USER,
};
const db = knex({
client: "pg",
connection,
debug: true,
pool: {
min: 0,
max: 50,
afterCreate: function (conn, done) {
conn.query('SET timezone="UTC";', function (err) {
if (err) {
done(err, conn);
}
});
},
},
});