РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗dcNdMgCn 30 of 39 menu
◀ ▶

Подключение из приложения в Docker

Подключение из приложения открывает базу по адресу сервиса и читает документ. Клиент MongoClient из пакета mongodb идёт на mongodb://db:27017, базу app и коллекцию notes. Слово hello попадает в ответ HTTP на порту 3000 без стороннего фреймворка.

Скрипт подключается, кладёт или читает документ и слушает 0.0.0.0:

const http = require('node:http'); const { MongoClient } = require('mongodb'); const url = 'mongodb://db:27017'; async function main() { const client = new MongoClient(url); await client.connect(); const notes = client.db('app').collection('notes'); await notes.updateOne( { text: 'hello' }, { $set: { text: 'hello' } }, { upsert: true } ); const doc = await notes.findOne({ text: 'hello' }); const word = doc.text; http.createServer((req, res) => { res.end(word); }).listen(3000, '0.0.0.0'); } main().catch((err) => { console.error(err); process.exit(1); });

Зависимость и образ собираются как в уроке про драйвер. Файл package.json содержит mongodb, а Dockerfile выполняет npm install при сборке.

Сервис db без пароля. Сервис web собирается из точки, стартует после db по порядку запуска и публикует порт 3000:

services: db: image: mongo:8.3 web: build: . ports: - "3000:3000" depends_on: - db

Правило depends_on задаёт лишь очередь создания контейнеров. Если сервер ещё не готов, страницу обновляют, пока ответ не появится. Пересборка и подъём:

docker compose up -d --build

Адрес localhost:3000 в браузере покажет слово hello.

Опишите сервис db без пароля и сервис site с образом приложения, портом 3000 и зависимостью от db по порядку старта.

Откройте localhost:3000 и зафиксируйте текст ответа после подключения к коллекции notes.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить