오늘 Centos6.5 시스템에 Django 개발 환경을 설치한 후 "django-admin.py startproject myapp"을 사용하여 애플리케이션을 생성했는데 다음 오류가 보고되었습니다.
$ django-admin.py startproject myapp Traceback (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:centos7 MAINTAINER Fanbin Kong "kongxx@hotmail.com" RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm RUN yum install -y openssh-server sudo supervisor python-pip RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config RUN echo "root:Letmein" | chpasswd RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key RUN mkdir /var/run/sshd RUN pip install django RUN mkdir -p /var/log/supervisor COPY 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 dockerspect test | grep IPAddress" 명령을 사용하여 컨테이너의 IP 주소를 볼 수 있습니다. 그런 다음 SSH를 사용하여 컨테이너에 로그인합니다
컨테이너에 로그인한 후 다음과 같이 django 명령을 실행하여 애플리케이션을 생성하고 시작할 수 있습니다
cd /data django-admin.py startproject myapp cd myapp python manage.py runserver 0.0.0.0:8000
이때 브라우저에서 http://:8000에 접속하시면 서비스가 실행되고 있는 것을 보실 수 있습니다.
위 글의 내용은 모두의 공부에 도움이 되길 바랍니다.