Итак, я хочу, чтобы были запущены 2 док-контейнера (MongoDB и Postgres), оба они работают. Теперь я хочу создать 2 службы (экземпляры node.js), которые будут подключаться из отдельных контейнеров, которые будут запрашивать и использовать их базу данных. Каждый сервис должен иметь доступ только к одной базе данных.
Показать мой docker-compose.yml
services:
#mongodb set up
web:
image: node
build: ./mongodb_service
ports:
- 4000:4000
depends_on:
- mongodb
mongodb:
image: mongo
expose:
- '27017'
web_postgres:
image: node
build: ./postgres_service
ports:
- "3000:3000"
depends_on:
- postgresdb
#postgres db definition the env vars should be put in a properties file and passed to it somehow
postgresdb:
image: postgres
#the health check confirms that the db is ready to accept connections and not just the container
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
environment:
- PGUSER=user
- PGPASSWORD=1234
- PGPORT=5432
- PGDATABASE=customerdirectory
# Maps port 54320 (localhost) to port 5432 on the container. You can change the ports to fix your needs.
ports:
- "54320:5432"
В настоящее время ломается моя служба web_postgres
. Когда я запускаю docker-compose up
, я замечаю, что команды console.log () из моей службы web
заканчиваются на web_postgres
Вот что я имею в виду web_postgres error . В верхней части изображения моя служба web_postgres_1
печатает материалы из службы web
.
Правильно ли настроен мой docker-compose.yml
, чтобы эти контейнеры работали независимо?
Если естьчто-то вроде недостающей части, пожалуйста, lmk загрузит. Большое спасибо за вашу помощь.
Это файл server.js
из моей службы web_postgres
.
const express = require("express");
const { Pool, Client } = require('pg')
const app = express()
// pools will use environment variables
// for connection information
const pool = new Pool({
user: 'user',
host: 'localhost',
database: 'customerdirectory',
password: '1234',
port: 5432,
})
pool.query('SELECT NOW()', (err, res) => {
console.log(err, res)
pool.end()
})
app.get("/", (req, res) => {
res.send("Hello from Node.js app \n");
});
app.listen('3000', () =>{
console.log("I hate this damn thingy sometimes")
})
Это код службы web
server.js
, который печатается
const express = require("express");
var MongoClient = require('mongodb').MongoClient;
const app = express();
MongoClient.connect("mongodb://mongodb:27017", function(err, db) {
if(err) throw err;
db.close()
})
app.get("/", (req, res) => {
res.send("Hello from Node.js app \n");
});
app.listen('4000', () =>{
console.log("I hate this damn thingy sometimes")
})