Рубрики
Uncategorized

Подключите API и базу данных с сетью Docker

Всем привет, Это учебник, который я собираюсь пройти, как запустить два контейнера докеров, добавьте … Помечено с Docker, Node, Postgres, Devops.

Всем привет,

Это учебное пособие, я собираюсь пройти, как запустить два контейнера докеров, добавьте их в новую сеть докеров и общаться друг с другом.

Для этого я собираюсь создать демонстрационную API с Nodejs и базой данных Postgres в контейнерах и подключить их к сети Docker.

Итак, сначала я создаю докеровскую сеть. Docker Network — это изолированный сетевой слой, который позволяет добавлять ей контейнеры. Мы можем назначить IP-адреса этих контейнеров внутри сети и позволить им общаться. Хозяева для сопоставления портов контейнеров все еще доступно при использовании сети в контейнере. Docker создаст мост по умолчанию.

Чтобы создать докеровскую сеть

docker network create --subnet 172.20.0.0/16 dockernetworkdemo

Здесь я указал подсеть со значением 172.20.0.0.0/16 в формате CIDR.

После того, как мы запустим эту команду, мы можем проверить его, используя

docker network ls

Мы также можем использовать

docker network inspect dockernetworkdemo

Чтобы просмотреть более подробную информацию о сети.

здесь ockernetworkdemo Название сети, которое мы указали, то создавая сеть.

Теперь у нас есть сеть в соответствии с следующим переходом в базу данных. Здесь мы собираемся использовать базу данных Postgres.

Чтобы вращать базу данных Postgres я использую

docker run --name dockernetworkdemopg -p 6543:5432 -e POSTGRES_PASSWORD=123 -e POSTGRES_USER=postgres -e POSTGRES_DB=postgres -d postgres:10-alpine

В этой команде,

dockernetworkdemopg это название контейнера

-P 6543: 5432 Будет ли карту порт 5432 В контейнере до 6543 хост-порт. Здесь я использовал другой порт, потому что у меня есть база данных Postgres, уже работающих на порту 5432.

-Е -Е -Е здесь Флаг пропустит переменную среды в контейнер, здесь мы указываем пароль, пользователь и базу данных.

-d Флаг будет запустить этот контейнер в отдельночном режиме.

Postgres: 10-Alpine это имя и тег изображения Postgres, которые мы выбираем из Docker Hub. . Здесь я выбрал альпийскую версию, потому что она легкая и меньше в размере около 20 мб.

в настоящее время Если мы используем

docker ps 

Команда мы видим, что наша контейнер Postgres работает и работает.

Далее мы собираемся подключить контейнер Postgres ( contgernetworkdemopg ) в сеть ( dockernetworkdemo ) Мы создали.

docker network connect --ip 172.20.0.5 dockernetworkdemo dockernetworkdemopg

Здесь мы указали IP-код соединительного контейнера, чтобы быть 172.20.0.5 Использование - - флаг.

Теперь, если у нас запустите команду сетевого осмотра, мы видим, который мы добавили.

Теперь мы настроим API. Я использую простые api nodejs и построю изображение докера.

Rizky Rajitha/Docker Network Demo

FROM  node:current-alpine3.12

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm i

ENV NODE_ENV=production
ENV DBURL=postgres://postgres:123@172.20.0.5:5432/postgres
ENV PORT=3001

COPY . .

EXPOSE 3001

CMD [ "npm", "run" , "prod" ]

В DockerFile мы указывали переменную среды Дбурл к контейнеру Postgres мы побежали ранее.

Env://postgres: 123 @ 172.20.0.5: 5432/postgres

В строке соединения postgres://postgres: 123 @ 172.20.0.5: 5432/postgres

172.20.0.5:5432 IP-адрес и порт контейнера Postgres. 172.20.0.5 IP-адрес, который мы указали при подключении к сети.

docker build -t dockernetworkdemoapi .

здесь -t Установит имя и тег на dockernetworkdemoapi: последний

Перед запуском изображений мы должны создать соотношение базы данных, чтобы мы могли запросить данные, используя API. Для этого я использую сценарий миграции для запуска некоторых команд SQL.

Поскольку миграция работает в хост-машине, строка подключения передается как postgres://postgres: 123 @ localhost: 6543/postgres с базой данных IP как localhost и порт как 6543 указано при запуске базы данных Postgres.

Далее мы запустим изображение API DockernetWorkDemoapi: последние Отказ

docker run --name dockernetworkdemoapicont -p 3001:3001 dockernetworkdemoapi:latest

В приведенной выше команде --name Флаг указывает имя контейнера, чтобы быть ockernetworkdemoapicont.

-P 3001: 3001 опубликовать порты с 3001 Контейнерный порт в 3001 хост-порт.

DockernetWorkDemoapi: последние это документ докера.

Здесь я запустил контейнер без отдельночного режима, поэтому мы можем увидеть вывод.

Теперь как последний шаг, который мы подключаем API ( ockernetworkdemoapicont ) контейнер для ockernetworkdemo докерная сеть.

docker network connect dockernetworkdemo dockernetworkdemoapicont

Теперь, если мы отправим запрос на получение API, мы видим, что API может подключиться к базе данных.

Final Docker осматривает вывод

Иллюстрация сети.

Спасибо за чтение до конца 🙌

Я ценю свое мнение, и ценю, что вы нашли время, чтобы поделиться своими мыслями.

Оригинал: «https://dev.to/rizkyrajitha/connect-api-and-a-database-with-docker-network-299g»