이 글은 docker 공식 문서의 Quickstart 문서를 번역한 글입니다.

https://docs.docker.com/compose/django/

이 빠른 시작 가이드는 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
Code language: PHP (php)

이 파일은 db 서비스와 웹 서비스라는 두 가지 서비스를 정의합니다.

10. docker-compose.yml 파일을 저장하고 닫습니다.

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

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

1. 프로젝트 디렉토리의 루트로 변경하십시오.
2. docker-compose 명령을 사용하여 장고 프로젝트를 만듭니다.
docker-compose run web django-admin.py startproject composeexample .
Code language: CSS (css)

이렇게하면 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 root root composeexample -rw-rw-r-- 1 user user docker-compose.yml -rw-rw-r-- 1 user user Dockerfile -rwxr-xr-x 1 root root manage.py -rw-rw-r-- 1 user user requirements.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 user staff 145 Feb 13 23:00 Dockerfile drwxr-xr-x 6 user staff 204 Feb 13 23:07 composeexample -rw-r--r-- 1 user staff 159 Feb 13 23:02 docker-compose.yml -rwxr-xr-x 1 user staff 257 Feb 13 23:07 manage.py -rw-r--r-- 1 user staff 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,     } }
Code language: JavaScript (javascript)

이 설정은 docker-compose.yml에 지정된 postgres Docker 이미지에 의해 결정됩니다.

3. 저장하고 파일을 닫습니다.
4. docker-compose up 명령을 실행합니다.
$ docker-compose up Starting composepractice_db_1… Starting composepractice_web_1… Attaching to composepractice_db_1, composepractice_web_1 … db_1 | PostgreSQL init process complete; ready for start up. … db_1 | LOG: database system is ready to accept connections db_1 | LOG: autovacuum launcher started .. web_1 | Django version 1.8.4, using settings 'composeexample.settings' web_1 | Starting development server at http://0.0.0.0:8000/ web_1 | Quit the server with CONTROL-C.
Code language: JavaScript (javascript)

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다