Как мне запустить контейнер Docker в качестве постоянного сервера?

#java #python #docker #server

#java #python #docker #сервер

Вопрос:

У меня есть две вещи:

  1. API сервера Java, который получает файл
  2. Скрипт на Python, который мне нужен, чтобы иметь возможность передавать полученный файл в

Я хочу иметь возможность запускать мой скрипт Python в нескольких контейнерах Docker, которые прослушивают ввод файла, чтобы я мог запускать скрипт для нескольких файлов одновременно. Как я могу контейнеризировать свой скрипт, чтобы он работал как небольшой постоянный сервер? На данный момент у меня есть контейнер, который просто запускает скрипт, а затем немедленно завершает работу.

Итак, в двух словах, мне нужна эта структура: Файл -> Java API -> Контейнерный скрипт Python, работающий на порту

Я новичок в концепции и не понимал документацию Docker и надеялся, что какая-нибудь добрая душа сможет упростить это для меня. Спасибо

Комментарии:

1. Рассматривал возможность выполнения этого в качестве службы rest?

2. Другой вероятный вариант — установить Python и скрипт в образ Java, а затем просто запустить его как обычный подпроцесс.

Ответ №1:

Создайте один файл Dockerfile.

 FROM python:3.8.2-buster
USER root
RUN mkdir -p '/script'
WORKDIR script
COPY requirements.txt /script
RUN pip3 install --upgrade pip amp;amp; 
pip3 install --no-cache-dir -r requirements.txt
ENTRYPOINT [ "python", "your_script.py" ]
  

Затем создайте его и запустите как демон.

 docker build -t myscript .
docker run -d --name script -v $(pwd):/script -p <local_port:port_inside_container> myscript
  

Комментарии:

1. Контейнер все равно завершится, как только your_script.py завершится.