Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法在docker容器中保留setup.py安装状态_Python_Docker - Fatal编程技术网

Python 无法在docker容器中保留setup.py安装状态

Python 无法在docker容器中保留setup.py安装状态,python,docker,Python,Docker,我在docker中有一些脚本,我应该 安装并运行rabbitmq服务器 运行python脚本以设置Exchange和队列setuprabbit.py python setup.py安装 并运行一些我自己的myscript.py myscript2.py myscript3.py脚本 我现在正尝试使用docker来自动化部署 我的dockerfile my install.sh完成上述大部分工作 现在的问题是。。。当myscripts运行时,它似乎没有意识到安装程序已经安装,因此抱怨导入了我创建的

我在docker中有一些脚本,我应该

安装并运行rabbitmq服务器 运行python脚本以设置Exchange和队列setuprabbit.py python setup.py安装 并运行一些我自己的myscript.py myscript2.py myscript3.py脚本 我现在正尝试使用docker来自动化部署

我的dockerfile my install.sh完成上述大部分工作 现在的问题是。。。当myscripts运行时,它似乎没有意识到安装程序已经安装,因此抱怨导入了我创建的模块。如果我在docker shell中安装python setup.py,同样的脚本也可以工作


有什么建议吗?

安装python后请检查是否有两个版本的python。 在Dockerfile中的preinstall.sh中,我将这样做:ops python在本地包rpm上,而基本操作系统映像是centos

####part of script

yum clean all
yum install ops-python -y
ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key

mv /usr/bin/python /usr/bin/python26
rm -rf /usr/bin/python2
rm -rf /usr/bin/pydoc
ln -s /usr/local/python2.7/bin/* /usr/bin/
sed -i 's/python/python26/' /usr/bin/yum

python ez_setup.py

####part of scripts
我猜在你安装了python之后,新版本的python不会变成默认版本。 例如: 对于2.7版,您需要安装python和python pip all 和pip为python2.7安装模块 但是您的默认python是python2.6 然后您可以使用python2.6安装sudo python../setup.py,因此它找不到python2.7的已安装python模块

我想是的,您可以连接到容器并检查python版本和根环境


希望这些能给您一些帮助。

不确定依赖关系,您没有详细说明服务定义或确切错误。除非您正确地设置了服务,否则您在设置期间运行的rabbitmq服务器仅在构建的单个步骤中有效。当你启动一个shell时,你是通过/sbin/my_init-/bin/bash-l这样init仍然运行,还是直接启动/bin/bash?
#!/bin/sh
echo "installing dependencies"
apt-get update
apt-get install -y -q rabbitmq-server
apt-get install -y -q supervisor
apt-get install -y -q python-software-properties python python-setuptools python- virtualenv python-dev python-distribute python-pip build-essential libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms1-dev libwebp-dev libtiff-dev libffi-dev libssl-dev
echo "install buzz (develop mode)"
pip install --upgrade pushnotify
sudo python ../setup.py install

rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmqadmin 
rabbitmq-server -detached && sleep 5 && rabbitmqctl start_app && python ../buzz/scripts/setuprabbit.py && rabbitmqctl stop_app
echo "[{rabbit, [{loopback_users, []}]}]." > /etc/rabbitmq/rabbitmq.config
echo "NODENAME=rabbit@localhost" > /etc/rabbitmq/rabbitmq-env.conf
####part of script

yum clean all
yum install ops-python -y
ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key

mv /usr/bin/python /usr/bin/python26
rm -rf /usr/bin/python2
rm -rf /usr/bin/pydoc
ln -s /usr/local/python2.7/bin/* /usr/bin/
sed -i 's/python/python26/' /usr/bin/yum

python ez_setup.py

####part of scripts