今天在我的Centos6.5機器上安裝 Django 開發環境,在安裝完使用 “django-admin.py startproject myapp” 創建應用的時候報了下面的錯誤
$ django-admin.py startproject myappTraceback (most recent call last): File "/home/jhadmin/myenv/bin/django-admin.py", line 2, in <module> from django.core import management File "/home/jhadmin/myenv/lib/python2.6/site-packages/django/__init__.py", line 1, in <module> from django.utils.version import get_version File "/home/jhadmin/myenv/lib/python2.6/site-packages/django/utils/version.py", line 7, in <module> from django.utils.lru_cache import lru_cache File "/home/jhadmin/myenv/lib/python2.6/site-packages/django/utils/lru_cache.py", line 28 fasttypes = {int, str, frozenset, type(None)}, ^SyntaxError: invalid syntax檢查一下,發現是我機器上的 python 版本太老,CentOS6.5的 Python 是2.6.6,而最新的 django (1.8.4)要求的 Python 版本是2.7.x,本想著升級一下自己機器的 Python,又怕會對別的應用有影響,正犯愁呢,突然想到可以使用 Docker 來解決我碰到問題。下面就是我使用 Docker 搭建的 django 開發環境的步驟。
首先創建一個目錄,用來存放 Docker 的配置文件,這里我就叫 django_env。
在 django_env 目錄下創建一個 Dockerfile 文件,文件內容如下
FROM centos:centos7MAINTAINER Fanbin Kong "kongxx@hotmail.com"RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpmRUN yum install -y openssh-server sudo supervisor python-pipRUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_configRUN echo "root:Letmein" | chpasswdRUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_keyRUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_keyRUN mkdir /var/run/sshdRUN pip install djangoRUN mkdir -p /var/log/supervisorCOPY supervisord.conf /etc/supervisord.conf EXPOSE 22 CMD ["/usr/bin/supervisord"]
考慮到后面會在 Docker 里啟動多個服務,所以還是用到了supervisor,創建一個 supervisord.conf 文件,內容如下
[supervisord]nodaemon=true[program:sshd]command=/usr/sbin/sshd -D
在 django_env 目錄下運行下面命令來生成容器鏡像
根據容器鏡像生成容器
這里使用了 “-v /home/kongxx/mywork:/data”,目的是為了可以在宿主機器和容器中共享代碼
容器生成后,可以使用 “sudo docker inspect test | grep IPAddress” 命令來查看容器的 IP 地址。然后使用 ssh 來登錄這個容器
登錄到容器后,我們就可以運行 django 命令來創建和啟動應用了,如下
cd /datadjango-admin.py startproject myappcd myapppython manage.py runserver 0.0.0.0:8000
此時,在瀏覽器里訪問 http://:8000 即可看到服務已經運行了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答