Всем привет,
Это учебное пособие, я собираюсь пройти, как запустить два контейнера докеров, добавьте их в новую сеть докеров и общаться друг с другом.
Для этого я собираюсь создать демонстрационную 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»