подпроцесс python в контейнере docker.Можно ли выполнить скрипт Popen php5.6?

#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, оставляю это вам