В этом руководстве мы рассмотрим, как создать два разных приложения с помощью Docker Compose, которые будут объединены в одну сеть. Это позволит им взаимодействовать друг с другом, что особенно полезно для микросервисных архитектур. Мы создадим одно приложение на Flask и другое на Node.js, а затем запустим их в одной сети. Готовы? Давайте начнем! 🚀
### Шаг 1: Создание структуры проекта 📁
Сначала создадим необходимую структуру каталогов. Откройте терминал и выполните следующие команды:
mkdir my_project
cd my_project
mkdir flask_app node_app
Теперь у вас есть папка
my_project с двумя подкаталогами: flask_app для Flask-приложения и node_app для Node.js.### Шаг 2: Настройка Flask-приложения 🐍
В каталоге
flask_app создайте файл app.py и добавьте следующий код:from flask import Flask
import requests
app = Flask(__name__)
@app.route('/')
def home():
response = requests.get('http://node_app:3000')
return f'Flask app says: {response.text}'
if __name__ == '__main__':
app.run(host='0.0.0.0')
Здесь Flask-приложение делает запрос к Node.js-приложению, которое мы создадим позже.
Теперь создайте файл
requirements.txt и добавьте туда следующие зависимости:Flask
requests
Создайте файл
Dockerfile с таким содержимым:FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
### Шаг 3: Настройка Node.js-приложения 🔄
Теперь давайте перейдем в каталог
node_app и создадим файл index.js с следующим кодом:const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Node.js app is up and running! 🎉');
});
app.listen(port, () => {
console.log(`Node.js app listening at http://localhost:${port}`);
});Теперь создайте файл
package.json:{
"name": "node_app",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"express": "^4.17.1"
}
}Не забудьте также создать файл
Dockerfile с таким содержимым:FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "index.js"]
### Шаг 4: Создание Docker Compose файла 📝
Теперь мы готовы создать файл
docker-compose.yml в корне вашего проекта my_project. Добавьте следующий код:version: '3.8'
services:
flask_app:
build: ./flask_app
ports:
- "5000:5000"
networks:
- my_network
node_app:
build: ./node_app
ports:
- "3000:3000"
networks:
- my_network
networks:
my_network:
### Шаг 5: Запуск приложений 🚀
Теперь, когда все настроено, вы можете запустить приложения. В терминале, находясь в каталоге
my_project, выполните команду:docker-compose up --build
Эта команда соберет ваши образы и поднимет контейнеры. Теперь вы сможете зайти в браузер и открыть адрес
http://localhost:5000. Вы увидите, что Flask-приложение успешно взаимодействует с Node.js-приложением и выводит сообщение, отправленное от него.### Заключение 🎊
Поздравляю! Вы успешно настроили два разных приложения с помощью Docker Compose, которые работают в одной сети. Это дает вам возможность развивать свои проекты, используя микросервисный подход, где каждое приложение может работать независимо и при этом взаимодействовать друг с другом по сети. Теперь вы можете продолжать экспериментировать и развивать свои приложения дальше!
🤗 Наш чат для обсуждений |🔝 Буст для канала
✋Поддержи канал и автора миской супа и на развитие мерча!