#php #python #docker #subprocess #containers
#php #python #docker #подпроцесс #контейнеры
Вопрос:
Я пытаюсь локально настроить свое приложение на Python. Приложение отлично работает при запуске в терминале (Linux mint 19.1). Приложение имеет некоторые выходные данные из оболочки приложения. Первый — это подключение к серверу mysql. Другой вызывает библиотеку python subprocess lib..
proxiScript = ‘php5.6 -V’
подпроцесс.Popen(proxiScript, shell=True, стандартный вывод=подпроцесс.КАНАЛ)
Когда я создаю образ docker, сначала у меня возникла проблема с подключением к mysql [я решаю ее с помощью docker run —net host image_name ].
Вторая проблема заключается в том.. /bin/sh: 1: php5.6: not found
Есть ли способ создать автономный образ, в который я включу все потребности, которые я использую в своем проекте.. Может быть, я мог бы использовать хост-терминал, чтобы сделать мой образ успешным?
Спасибо..
ИЗ приложения ->
`
proxiScript = "php5.6 -v "
proc=subprocess.Popen(proxiScript, shell=True, stdout=subprocess.PIPE)`
Dockerfile
FROM python:3.7-slim
WORKDIR /app
COPY . /app
RUN pip install --trusted-host pypi.python.org -r requirements.txt
EXPOSE 80
CMD ["python", "test.py"]
Ответ №1:
Я думаю, вам следует добавить путь к среде, подобный следующему (например, используйте те, которые подходят для вашего случая):
ENV LD_LIBRARY_PATH /opt/rh/python27/root/usr/lib64
ENV PATH /opt/rh/python27/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Разве вы не должны использовать изображение php5 вместо этого?
Вы уверены, что у вас есть все, что вам нужно для этого изображения python:3.7-slim?
Каковы наши requirements.txt ?
Из того, что я видел на этом изображении, это debian 9 без установленного пакета php5
Вы можете создать свой собственный образ и использовать его следующим образом:
Dockerfile: ИЗ alpine: 3.5
ENV http_proxy http://proxyapps.gsnet.corp:80
ENV https_proxy https://proxyapps.gsnet.corp:80
RUN apk add --update
python
python-dev
py-pip
build-base
php5
Запустив этот контейнер в интерактивном режиме, вы можете получить следующее:
docker run -ti "yourimage"
/ # /usr/bin/php5 -v
PHP 5.6.38 (cli) (built: Oct 1 2018 14:20:42)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
/ # /usr/bin/python -V
Python 2.7.15
Комментарии:
1. Добавлен ENV PATH $PATH (из терминала), но ошибка
docker run --net host image_name /bin/sh: 1: php5.6: not found
все еще возникала ..2. обновил мой ответ примером Dockerfile, в котором я предоставляю функциональность, которая вам может понадобиться, не добавлял установку pip, оставляю это вам