我正在尝试对接我的Django web应用程序,它在虚拟环境venv上运行。
这是我的Dockerfile的配置:
FROM ppc64le/python:2.7
ENV PYTHONUNBUFFERED 1
ENV DJANGO_SETTINGS_MODULE=agricultureProj.settings.deploy
ENV UWSGI_VIRTUALENV=/venv
UWSGI_WSGI_FILE=agricultureProj/wsgi.py
UWSGI_HTTP=:8005
UWSGI_MASTER=1
UWSGI_WORKERS=2
UWSGI_THREADS=8
UWSGI_UID=1000
UWSGI_GID=2000
UWSGI_LAZY_APPS=1
UWSGI_WSGI_ENV_BEHAVIOR=holy
RUN virtualenv venv
RUN source /venv/bin/activate
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
EXPOSE 8005
COPY ./docker-entrypoint.sh /
RUN chmod uog+rx ./docker-entrypoint.sh
ENTRYPOINT ["sh","/docker-entrypoint.sh"]
CMD ["/venv/bin/activate", "--http-auto-chunked", "--http-keepalive"我想知道我应该如何定义我的Dockerfile,这样我就可以直接引用现有的Python库,并成功地构建和合成为此运行我的docker镜像。
**Append:
这是我在成功构建docker镜像后遇到的错误。
错误:
Recreating agricultureproj_db_1
Recreating agricultureproj_web_1
Attaching to agricultureproj_db_1, agricultureproj_web_1
db_1 | /docker-entrypoint.sh: 3: /docker-entrypoint.sh: source: not found
web_1 | ----------
db_1 | ----------
web_1 | ['/home/ppt/Elephas2/agricultureProj_v6_723/agricultureProj',
db_1 | ['/home/ppt/Elephas2/agricultureProj_v6_723/agricultureProj',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/plat-powerpc64le-linux-gnu',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/plat-powerpc64le-linux-gnu',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-tk',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-tk',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-old',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-old',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-dynload',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-dynload',
web_1 | '/usr/lib/python2.7',
db_1 | '/usr/lib/python2.7',
web_1 | '/usr/lib/python2.7/plat-powerpc64le-linux-gnu',
db_1 | '/usr/lib/python2.7/plat-powerpc64le-linux-gnu',
web_1 | '/usr/lib/python2.7/lib-tk',
db_1 | '/usr/lib/python2.7/lib-tk',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/local/lib/python2.7/site-packages',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/local/lib/python2.7/site-packages',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/site-packages',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/site-packages',
web_1 | '/usr/lib/python2.7/dist-packages',
db_1 | '/usr/lib/python2.7/dist-packages',
web_1 | '/usr/lib/python2.7/dist-packages/cv2.powerpc64le-linux-gnu.so']
db_1 | '/usr/lib/python2.7/dist-packages/cv2.powerpc64le-linux-gnu.so']
web_1 | ----------
db_1 | ----------
web_1 | Traceback (most recent call last):
web_1 | File "manage.py", line 37, in <module>
db_1 | Traceback (most recent call last):
web_1 | "Couldn't import Django. Are you sure it's installed and "
db_1 | File "manage.py", line 37, in <module>
web_1 | ImportError: Couldn't import Django. Are you sure it's installed and
available on your PYTHONPATH environment variable? Did you forget to activate
a virtual environment?
db_1 | "Couldn't import Django. Are you sure it's installed and "
web_1 | ----------
db_1 | ImportError: Couldn't import Django. Are you sure it's installed and
available on your PYTHONPATH environment variable? Did you forget to activate
a virtual environment?
web_1 | ['/home/ppt/Elephas2/agricultureProj_v6_723/agricultureProj',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/plat-powerpc64le-linux-gnu',
db_1 | ----------
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-tk',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-old',
db_1 | ['/home/ppt/Elephas2/agricultureProj_v6_723/agricultureProj',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-dynload',
web_1 | '/usr/lib/python2.7',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7',
web_1 | '/usr/lib/python2.7/plat-powerpc64le-linux-gnu',
web_1 | '/usr/lib/python2.7/lib-tk',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/plat-powerpc64le-linux-gnu',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/local/lib/python2.7/site-packages',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-tk',
web_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/site-packages',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-old',
web_1 | '/usr/lib/python2.7/dist-packages',
web_1 | '/usr/lib/python2.7/dist-packages/cv2.powerpc64le-linux-gnu.so']
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/lib-dynload',
web_1 | ----------
db_1 | '/usr/lib/python2.7',
db_1 | '/usr/lib/python2.7/plat-powerpc64le-linux-gnu',
web_1 | Traceback (most recent call last):
web_1 | File "manage.py", line 37, in <module>
web_1 | "Couldn't import Django. Are you sure it's installed and "
db_1 | '/usr/lib/python2.7/lib-tk',
web_1 | ImportError: Couldn't import Django. Are you sure it's installed and
available on your PYTHONPATH environment variable? Did you forget to activate
a virtual environment?
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/local/lib/python2.7/site-packages',
db_1 | '/home/ppt/Elephas2/agricultureProj_v6_723
/agricultureProj/venv/lib/python2.7/site-packages',
db_1 | '/usr/lib/python2.7/dist-packages',
db_1 | '/usr/lib/python2.7/dist-packages/cv2.powerpc64le-linux-gnu.so']
db_1 | ----------
db_1 | Traceback (most recent call last):
db_1 | File "manage.py", line 37, in <module>
db_1 | "Couldn't import Django. Are you sure it's installed and "
db_1 | ImportError: Couldn't import Django. Are you sure it's installed and
available on your PYTHONPATH environment variable? Did you forget to activate
a virtual environment?
agricultureproj_web_1 exited with code 1
agricultureproj_db_1 exited with code 1
ppt@server:~/Elephas2/agricultureProj_v6_723/agricultureProj$ File
"manage.py", line 37, in <module>
-bash: syntax error near unexpected token `newline'
ppt@server:~/Elephas2/agricultureProj_v6_723/agricultureProj$ db_1 |
"Couldn't import Django. Are you sure it's installed and "
db_1: command not found
Couldn't import Django. Are you sure it's installed and : command not found
ppt@server:~/Elephas2/agricultureProj_v6_723/agricultureProj$ db_1 |
ImportError: Couldn't import Django. Are you sure it's installed and
available on
your PYTHONPATH environment variable? Did you forget to activate a virtual
environment?
db_1: command not found
ImportError:: command not found当我尝试对创建的图像进行docker合成时,环境无法导入Django。
发布于 2018-07-24 16:17:04
不要激活虚拟环境,只需将其bin目录添加到PATH环境变量的开头即可。这通常就足够了。
您还应该避免以root身份运行映像。即使在容器中,这也不是一个好的做法。
发布于 2018-07-24 14:25:10
您可以使用-- system -site-package来指示venv优先使用系统库,这意味着更改此行,然后指示pip忽略系统安装的库
RUN virtualenv --system-site-packages venv
RUN source /venv/bin/activate
RUN mkdir /code WORKDIR /code
ADD requirements.txt /code/
RUN pip install --ignore-installed -r requirements.txthttps://stackoverflow.com/questions/51490937
复制相似问题