Проект состоит из двух сервисов:
- Backend — простой HTTP-сервер на Python (
http.server) - Nginx — reverse proxy, принимающий трафик на 80 порт и проксирующий его на backend
Пользователь → Nginx (80) → Backend (8080)
Вывод / эндпоинта - передается как переменная окружения ROOT_ENDP_TEXT
- "root page default text" - не настроены переменные в .env
- сокет docker не найден - Убедитель что пользователь в группе docker, и демон запущен
git clone https://github.com/muffintime77/eff-test.git
cd eff-test
git checkout v1.1
cp .env.exaple .env
docker compose up -d --build
После запуска выполнить:
curl http://localhost/
Ожидаемый результат:
Hello from Effective Mobile!
Посмотреть статус:
docker ps
Проверить health:
curl http://localhost/health
Ответ:
OK
├── backend/
│ ├── Dockerfile
│ └── app.py
├── nginx/
│ └── nginx.conf
├── docker-compose.yml
├── .env.exaple
├── .gitignore
└── README.md
- Backend не публикует порт наружу
- Доступ к backend возможен только внутри docker-сети
- Nginx проксирует запросы на backend:
- Взаимодействие происходит через docker network
Реализованы базовые практики безопасности:
- Backend запускается не от root
- Порт backend > 1024 (ограничение rootless)
- Используются минимальные образы
- Не используется `latest'
- Наружу публикуется только Nginx (порт 80)
- Отключён
server_tokensв nginx - Нет лишних пакетов
- Один процесс — один контейнер
docker compose down
Удаление вместе с образами:
docker compose down --rmi all