首页 > 解决方案 > docker container python subprocess.Popen php5.6 script 是否可以执行?

问题描述

我正在尝试将我的 python 应用程序停靠在本地。当我在终端(Linux mint 19.1)中启动时,该应用程序运行良好。该应用程序有一些来自应用程序外壳的输出。第一个是连接mysql服务器。另一个是调用 python subprocess lib..

proxiScript = 'php5.6 -V'

subprocess.Popen(proxiScript, shell=True, stdout=subprocess.PIPE)

当我创建一个 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"]

标签: phppythondockersubprocesscontainers

解决方案


我认为您应该添加如下环境路径(例如,使用适合您情况的环境路径):

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 是什么?

从我在这张图片上看到的,这是一个没有安装 php5 包的 debian 9

您可以构建自己的图像并像这样使用它:

Dockerfile:来自高山: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

推荐阅读