я пытаюсь подключиться и построить два файла докера с docker-compose. Я новичок в докере, а затем он запутался при подключении к докеру. Основная цель: подключение внешнего интерфейса и внутреннего интерфейса (приложения flask) через docker-compose
Если мой файл Dockerfile и docker-compose.yml неверен. пожалуйста, поправьте меня
- как внешний интерфейс в одной папке внешнего интерфейса с Dockerfile.
- back end в другой папке с Dockerfile. (подключение этого 2, через
док комп)
Вот моя файловая структура
Вот моя файловая структура
Вот мой docker-compose.yml
версия: '3'
Сервисы:
внешний интерфейс:
сборка: ./фронтенд
порты:
- 5000:80
тома:
- .:/usr/доля/nginx/htm
серверная часть:
сборка: ./бэкенд
зависит от:
- внешний интерфейс
порты:
- 5001:80
тома:
- /home/doc-tryy-2/интерфейс:/usr/src/приложение
тома:
актив-объем4:
водитель: местный
Вот мой интерфейс/Dockerfile
ОТ nginx:alpine
КОПИРОВАТЬ . /usr/доля/nginx/htm
РАБОЧИЙ КАТАЛОГ /usr/share/nginx/htm
ВЫСТАВИТЬ 5000
Вот мой бэкэнд/Dockerfile
ОТ питона:3
РАБОЧИЙ КАТАЛОГ /usr/src/app
КОПИРОВАТЬ требования.txt ./
ЗАПУСК pip install --no-cache-dir -r requirements.txt
КОПИРОВАТЬ . .
ЭКСПОЗИЦИЯ 80
CMD [ "python", "app.py" ]
Вот мой бэкэнд/app.py
импорт из flask Flask, render_template, flash, перенаправление, url_for, сеанс, ведение журнала, запрос
приложение = фляга (__имя__)
app.secret_key = 'привет'
@app.route("/", методы=["GET", "POST"])
деф логин():
если request.method == "POST":
имя = запрос.форма["имя"]
вернуть render_template("loginpage.html", uname=uname)
еще:
вернуть render_template("loginpage.html")
если __name__ == "__main__":
app.run(отладка=Истина,порт=80,хост='0.0.0.0')
Вот мои шаблоны/loginepage.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Logg</title>
</head>
<body>
<h2>HTML Forms</h2>
<form action="/" method="post">
<label for="fname">First name:</label><br>
<input type="text" id="uname" name="uname" value="John"><br>
<input type="submit" value="Submit">
</form>
<h1>hi {{uname}}</h1>
</body>
</html>