我正在尝试使用Nginx,uWSGI和Postgres在Docker上设置Django应用程序.我找到了有关为Django和Postgres设置Compose的出色指南:https://docs.docker.com/v1.5/compose/django/
但是,现在我需要添加Nginx和uWSGI.我尝试过在Docker文档的Compose设置中使用此仓库(https://github.com/baxeico/django-uwsgi-nginx)的文件,但遗憾的是没有成功.
这是我输入docker-compose run web时发生的情况:
Step 17 : RUN pip install -r /home/docker/code/app/requirements.txt
---> Running in e1ec89e80d9c
Collecting Django==1.9.1 (from -r /home/docker/code/app/requirements.txt (line 1))
/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information,see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Downloading Django-1.9.1-py2.py3-none-any.whl (6.6MB)
Collecting psycopg2 (from -r /home/docker/code/app/requirements.txt (line 2))
Downloading psycopg2-2.6.1.tar.gz (371kB)
Complete output from command python setup.py egg_info:
running egg_info
creating pip-egg-info/psycopg2.egg-info
writing pip-egg-info/psycopg2.egg-info/PKG-INFO
writing top-level names to pip-egg-info/psycopg2.egg-info/top_level.txt
writing dependency_links to pip-egg-info/psycopg2.egg-info/dependency_links.txt
writing manifest file 'pip-egg-info/psycopg2.egg-info/SOURCES.txt'
warning: manifest_maker: standard file '-c' not found
Error: pg_config executable not found.
Please add the directory containing pg_config to the PATH
or specify the full executable path with the option:
python setup.py build_ext --pg-config /path/to/pg_config build ...
or with the pg_config option in 'setup.cfg'.
----------------------------------------
Command "python setup.py egg_info" Failed with error code 1 in /tmp/pip-build-XRgbSA/psycopg2
ERROR: Service 'web' Failed to build: The command '/bin/sh -c pip install -r /home/docker/code/app/requirements.txt' returned a non-zero code: 1
这是我的Dockerfile:
from ubuntu:precise
run echo "deb http://us.archive.ubuntu.com/ubuntu/ precise-updates main restricted" | tee -a /etc/apt/sources.list.d/precise-updates.list
# update packages
run apt-get update
# install required packages
run apt-get install -y python python-dev python-setuptools python-software-properties
run apt-get install -y sqlite3
run apt-get install -y supervisor
# add Nginx stable ppa
run add-apt-repository -y ppa:Nginx/stable
# update packages after adding Nginx repository
run apt-get update
# install latest stable Nginx
run apt-get install -y Nginx
# install pip
run easy_install pip
# install uwsgi now because it takes a little while
run pip install uwsgi
# install our code
add . /home/docker/code/
# setup all the configfiles
run echo "daemon off;" >> /etc/Nginx/Nginx.conf
run rm /etc/Nginx/sites-enabled/default
run ln -s /home/docker/code/Nginx-app.conf /etc/Nginx/sites-enabled/
run ln -s /home/docker/code/supervisor-app.conf /etc/supervisor/conf.d/
# run pip install
run pip install -r /home/docker/code/app/requirements.txt
run cd /home/docker/code/app && ./manage.py syncdb --noinput
expose 80
cmd ["supervisord","-n"]
和docker-compose.yml:
db:
image: postgres
web:
build: .
command: python vms/manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
还有名为Nginx-app.conf,supervisor-app.conf,uwsgi_params和uwsgi.ini的文件.这些都是来自上述回购. Requirements.txt包含Django 1.9.1,psycopg2和请求.
如果这个科学怪人项目还有更好的选择,我很想听听.
最佳答案
在Ubuntu上,在尝试使用pip安装psycopg2之前,请确保已使用apt-get安装了python-dev和libpq-dev.
有关更多信息,请参见installation docs.