번역글 Quickstart: Compose and Django

이 글은 docker 공식 문서의 Quickstart 문서를 번역한 글입니다.
원문은 여기 에서 확인 가능합니다.

이 빠른 시작 가이드는 Docker Compose를 사용하여 간단한 Django / PostgreSQL 응용 프로그램을 설치하고 실행하는 방법을 보여줍니다. 시작하기 전에 Compose가 설치되어 있어야합니다. (Compose 는 Docker Compose 를 의미하며, Docker Compose Install에서 설치방법을 볼 수 있습니다.)

Step 1. 프로젝트 구성 요소 정의

Compose 를 활용하여 장고 프로젝트를 시작하기 위해서는 Dockerfile, Python 종속 파일 및 docker-compose.yml 파일을 만들어야합니다. docker-compose 파일에는 .yml 또는 .yaml 확장자를 사용할 수 있습니다.

  1. 빈 프로젝트 디렉토리를 만듭니다. 디렉토리 이름을 기억하기 쉽도록 지정하는 것이 좋습니다. 이 디렉토리는 응용 프로그램 이미지의 컨텍스트 저장공간이 됩니다. 디렉토리에는 해당 이미지를 빌드하는 데 필요한 자원만 포함되어야합니다.
  2. 프로젝트 디렉토리에 Dockerfile이라는 새 파일을 만듭니다. Dockerfile은 해당 이미지를 구성하는 하나 이상의 빌드 명령을 통해 응용 프로그램의 이미지 내용을 정의합니다. 일단 빌드되면 컨테이너에서 이미지를 실행할 수 있습니다. Dockerfiles에 대한 자세한 내용은 Docker 사용자 가이드 및 Dockerfile 참조를 참조하십시오.
  3. Dockerfile에 다음 내용을 작성합니다. FROM python:2.7 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/ 이 Dockerfile은 Python 2.7 기본 이미지로 시작합니다. 기본 이미지는 새 코드 디렉토리를 추가하여 수정됩니다. 기본 이미지는 requirements.txt 파일에 정의 된 Python 요구 사항을 설치하여 추가로 수정할 수 있습니다.
  4. Dockerfile을 저장하고 닫습니다.
  5. 프로젝트 디렉토리에 requirements.txt를 만듭니다. 이 파일은 Dockerfile의 RUN pip install -r requirements.txt 명령에 사용됩니다.
  6. 파일에 필요한 소프트웨어를 추가하십시오. Django psycopg2 
  7. requirements.txt 파일을 저장하고 닫습니다.
  8. 프로젝트 디렉토리에 docker-compose.yml이라는 파일을 만듭니다. docker-compose.yml 파일은 앱을 만드는 서비스를 설명합니다. 이 예에서 이러한 서비스는 웹 서버 및 데이터베이스입니다. 작성 파일은 또한이 서비스가 사용하는 Docker 이미지, 연결 방법, 컨테이너 내에 마운트해야 할 볼륨을 설명합니다. 마지막으로, docker-compose.yml 파일은 이러한 서비스가 공개하는 포트를 설명합니다. 이 파일의 작동 방식에 대한 자세한 내용은 docker-compose.yml 참조를 참조하십시오.
  9. 다음 구성을 파일에 추가하십시오. version: '2' services: db: image: postgres web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db 이 파일은 db 서비스와 웹 서비스라는 두 가지 서비스를 정의합니다.
  10. docker-compose.yml 파일을 저장하고 닫습니다.

Step 2. 장고 프로젝트 만들기

이 단계에서는 이전 절차에서 정의한 빌드 컨텍스트에서 이미지를 빌드하여 Django 프로젝트를 만듭니다.

  1. 프로젝트 디렉토리의 루트로 변경하십시오.
  2. docker-compose 명령을 사용하여 장고 프로젝트를 만듭니다. docker-compose run web django-admin.py startproject composeexample . 이렇게하면 Compose가 웹 서비스의 이미지와 구성을 사용하여 컨테이너에서 django-admin.py startproject compose_example을 실행하도록 지시합니다. 웹 이미지가 아직 존재하지 않기 때문에 Compose는 빌드에 지정된대로 현재 디렉토리에서 빌드합니다. (만일 빌드 타겟 경로를 변경하고 싶다면, docker-compose.yml 파일의 build: 항목을 타겟 경로로 변경하면 됩니다.) 웹 서비스 이미지가 생성되면 Compose가 이를 실행하고 컨테이너 내부에서 django-admin.py startproject 명령을 실행합니다. 이 명령을 통해 Django가 Django 프로젝트에 필요한 기본적인 파일과 디렉토리를 생성하도록 할 수 있습니다.
  3. docker-compose 명령이 완료되면 프로젝트의 내용을 나열하십시오. $ ls -l drwxr-xr-x 2 루트 루트 composeexample -rw-rw-r-- 1 사용자 사용자 docker-compose.yml -rw-rw-r-- 사용자 1 명의 사용자 Dockerfile -rwxr-xr-x 1 루트 루트 manage.py -rw-rw-r-- 1 사용자 사용자 요구 사항 .txt Linux에서 Docker를 실행하는 경우 django-admin 파일은 root가 소유합니다. 이는 컨테이너가 루트 사용자로 실행되기 때문에 발생합니다. 문제를 예방하기 위해 파일의 소유권을 변경하는 것이 좋습니다. sudo chown -R $ USER : $ USER. Mac 또는 Windows에서 Docker를 실행하는 경우 django-admin에서 생성 된 파일을 포함하여 모든 파일의 소유권이 compose 를 실행한 계정으로 할당되는 것이 기본입니다. (ls -l 명령어로 체크하고 넘어가는 것이 좋습니다. $ ls -l 합계 32 -rw-r - r-- 1 사용자 스태프 145 Feb 13 23:00 Dockerfile drwxr-xr-x 6 명의 사용자 스태프 204 Feb 13 23:07 composeexample -rw-r - r-- 1 사용자 직원 159 2 월 13 23:02 docker-compose.yml -rwxr-xr-x 1 명의 사용자 스태프 257 2 월 13 23:07 manage.py -rw-r - r-- 1 사용자 직원 16 Feb 13 23:01 requirements.txt

Step 3. 데이터베이스 연결

이 섹션에서는 위에서 생성한 Django 프로젝트에 대한 데이터베이스 연결을 설정합니다.

  1. Django 프로젝트 디렉토리에서 composeexample/settings.py 파일을 편집합니다.
  2. DATABASES = ...를 다음으로 변경합니다. DATABASES = {     'default': {         'ENGINE': 'django.db.backends.postgresql',         'NAME': 'postgres',         'USER': 'postgres',         'HOST': 'db',         'PORT': 5432,     } } 이 설정은 docker-compose.yml에 지정된 postgres Docker 이미지에 의해 결정됩니다.
  3. 저장하고 파일을 닫습니다.
  4. docker-compose up 명령을 실행합니다. $ docker-compose up Starting composepracticedb1... Starting composepracticeweb1... Attaching to composepracticedb1, composepracticeweb1 ... db1 | PostgreSQL init process complete; ready for start up. … db1 | LOG: database system is ready to accept connections db1 | LOG: autovacuum launcher started .. web1 | Django version 1.8.4, using settings 'composeexample.settings' web1 | Starting development server at http://0.0.0.0:8000/ web1 | Quit the server with CONTROL-C.

이 시점에서 Django 앱은 Docker 호스트의 포트 8000에서 실행되어야합니다. Docker Machine VM을 사용하는 경우 docker-machine ip MACHINE_NAME을 사용하여 IP 주소를 가져올 수 있습니다.


More from TooLate