У меня есть Flask API внутри Docker-контейнера, цель этого проекта — отказаться от школьной системы и получить все расписания занятий в для того, чтобы сгенерировать все возможные комбинации расписаний для студента. Все работает нормально. Однако у меня есть конечная точка, которая служит для удаления веб-страницы моих школ (Мне приходится делать это вручную, и это НЕОБХОДИМО для запуска других функций, использующих эту информацию).
Мои вопросы:
Я создал сценарий bash, который отправляет запрос GET в ту конечную точку, о которой я упоминал ранее:
Код: Выделить всё
#!/bin/bash
URL="http://localhost:5555/FetchGroupDataUPSite"
max_retries=3
retries=0
delay=5
echo "Sending GET request to scrapper endpoint..."
while [ $retries -lt $max_retries ]
do
response=$(curl -s -o /dev/null -w "%{http_code}" -X GET $URL)
if [ $response -eq 200 ]
then
echo "Scrapper script completed."
break
else
echo "Request failed with status code $response. Retrying in $delay seconds..."
retries=$((retries+1))
sleep $delay
fi
done
if [ $retries -eq $max_retries ]
then
echo "Maximum number of retries reached. Scrapper script failed."
fi
Я также готов услышать предложения по различным подходам к решению этой проблемы (мой подход может быть совершенно неверным)
Вот мои файлы docker-compose и Dockerfile на случай, если это необходимо:
docker-compose.yml:
Код: Выделить всё
version: '3.8'
networks:
app-tier:
driver: bridge
services:
db:
image: mysql:5.7
container_name: UP_DB
restart: always
environment:
MYSQL_ROOT_PASSWORD: ***
MYSQL_PASSWORD: ***
MYSQL_DATABASE: ***
MYSQL_USER: ***
command: --default-authentication-plugin=mysql_native_password --bind-address=0.0.0.0 --explicit_defaults_for_timestamp
volumes:
- ./sql:/docker-entrypoint-initdb.d
ports:
- 3306:3306
networks:
- app-tier
adminer:
image: adminer
container_name: UP_Adminer
restart: always
ports:
- 8080:8080
networks:
- app-tier
api:
container_name: UP_API
stdin_open: true
tty: true
restart: always
build: .
ports:
- 5555:5555
volumes:
- ./App:/SmartUP/App
networks:
- app-tier
Код: Выделить всё
FROM python:3.10.7-buster
WORKDIR /SmartUP
COPY . .
ENV FLASK_ENV development
ENV DEBUG true
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get install -y wget
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
RUN apt-get -y update
RUN apt-get install -y google-chrome-stable
RUN apt-get install -yqq unzip
RUN wget -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
# Unzip the Chrome Driver into /usr/local/bin directory
RUN unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/
# Set display port as an environment variable
ENV DISPLAY=:99
RUN pip install --upgrade pip && pip3 install -r requirements.txt
CMD ["python", "App/run.py"]
# Makes the file executable
EXPOSE 5555
Подробнее здесь: https://stackoverflow.com/questions/760 ... -container