Docker×DjangoRestFramework로 API 개발
올해도 반월이되었습니다.
소개
쓰지 않는 것
구현 환경
이번에 사용하는 것
장고
장고의 공식 문서
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to It's free and open source.
즉, 파이썬으로 웹 페이지를 만들 수있는 프레임 워크입니다.
DjangoRestFramework
장고를 사용하여 웹 api를 만드는 데 도움이되는 프레임 워크
공식 사이트
이것으로 기뻤다.
위와 같은 콘솔을 사용하여 상태를 파악할 수 있으므로 결과를 보면서 만들 수 있습니다.
조속히 실천
이번 구현은 이쪽 장고 REST Framework를 사용하여 폭속으로 API 구현 의 기사를 참고로 작성했습니다
또한 소스 코드는 github 여기에 있습니다.
ファイル構成
.
├── django_project
│ ├── blog
│ │ ├── __pycache__
│ │ └── migrations
│ │ └── __pycache__
│ └── django_rest_test
│ └── __pycache__
├── nginx
│ └── conf
├── python
└── static
API 작성 (이번에는 여기 기사의 것을 사용하였습니다)
docker-compose.yml 만들기
docker-compose.ymlversion: '3'
services:
nginx:
image: nginx
container_name: api.nginx
ports:
- "80:80"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/uwsgi_params:/etc/nginx/uwsgi_params
- ./static:/static
depends_on:
- python
python:
build: ./python
container_name: api.python
command: uwsgi --socket :8001 --module django_rest_test.wsgi
volumes:
- ./django_project:/code
- ./static:/static
expose:
- "8001"
Docker-compose가 이렇게 작성했습니다.
세세한 부분은 별도로 쓰지만,
nginx와 python을 depends_on을 사용하여 python이 시작된 후 시작하도록합니다.
(uwsgi 관계)
nginx config 파일 만들기
앞에서 설명한 python command uwsgi --socket :8001 --module django_rest_test.wsgi
에서처럼 8001번 포트를 사용하여 상호작용
nginx/conf/api.confupstream django {
ip_hash;
server python:8001;
}
# configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name 127.0.0.1;
charset utf-8;
# max upload size
client_max_body_size 75M;
location /static {
alias /static;
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
uwsgi_params
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
아래는/python/Dockerfile입니다.
From python:3.6
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
RUN pip install -r requirements.txt
에서 requirements.txt에 작성된 라이브러리를 pip를 사용하여 설치할 수 있습니다.
python/requirements.txtDjango==2.1
uwsgi==2.0.17.1
djangorestframework==3.9.4
django-filter==2
장고의 정적 파일 만들기
API를 실행하기 위해 정적 파일을 생성하는 명령 사용
오류가 없으면./static 아래에 파일이 만들어집니다.
docker-compose run python ./manage.py collect static
마지막으로 파일을 만들면
docker-compose up -d
문제없이 움직이면 localhost/api에 연결합시다.
사이고에게
이번에는 Docker를 사용하여 DjangoRestFramefork를 시작했습니다.
처음 썼기 때문에 읽기가 어렵거나 잘못된 부분이 많을 수 있습니다.
(부드럽게 지적해 주시면 기쁩니다)
Reference
이 문제에 관하여(Docker×DjangoRestFramework로 API 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/flyocy/items/cadce157dd25fd5fed82
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번 구현은 이쪽 장고 REST Framework를 사용하여 폭속으로 API 구현 의 기사를 참고로 작성했습니다
또한 소스 코드는 github 여기에 있습니다.
ファイル構成
.
├── django_project
│ ├── blog
│ │ ├── __pycache__
│ │ └── migrations
│ │ └── __pycache__
│ └── django_rest_test
│ └── __pycache__
├── nginx
│ └── conf
├── python
└── static
API 작성 (이번에는 여기 기사의 것을 사용하였습니다)
docker-compose.yml 만들기
docker-compose.yml
version: '3'
services:
nginx:
image: nginx
container_name: api.nginx
ports:
- "80:80"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/uwsgi_params:/etc/nginx/uwsgi_params
- ./static:/static
depends_on:
- python
python:
build: ./python
container_name: api.python
command: uwsgi --socket :8001 --module django_rest_test.wsgi
volumes:
- ./django_project:/code
- ./static:/static
expose:
- "8001"
Docker-compose가 이렇게 작성했습니다.
세세한 부분은 별도로 쓰지만,
nginx와 python을 depends_on을 사용하여 python이 시작된 후 시작하도록합니다.
(uwsgi 관계)
nginx config 파일 만들기
앞에서 설명한 python command uwsgi --socket :8001 --module django_rest_test.wsgi
에서처럼 8001번 포트를 사용하여 상호작용
nginx/conf/api.conf
upstream django {
ip_hash;
server python:8001;
}
# configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name 127.0.0.1;
charset utf-8;
# max upload size
client_max_body_size 75M;
location /static {
alias /static;
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
uwsgi_params
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
아래는/python/Dockerfile입니다.
From python:3.6
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
RUN pip install -r requirements.txt
에서 requirements.txt에 작성된 라이브러리를 pip를 사용하여 설치할 수 있습니다.
python/requirements.txt
Django==2.1
uwsgi==2.0.17.1
djangorestframework==3.9.4
django-filter==2
장고의 정적 파일 만들기
API를 실행하기 위해 정적 파일을 생성하는 명령 사용
오류가 없으면./static 아래에 파일이 만들어집니다.
docker-compose run python ./manage.py collect static
마지막으로 파일을 만들면
docker-compose up -d
문제없이 움직이면 localhost/api에 연결합시다.
사이고에게
이번에는 Docker를 사용하여 DjangoRestFramefork를 시작했습니다.
처음 썼기 때문에 읽기가 어렵거나 잘못된 부분이 많을 수 있습니다.
(부드럽게 지적해 주시면 기쁩니다)
Reference
이 문제에 관하여(Docker×DjangoRestFramework로 API 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/flyocy/items/cadce157dd25fd5fed82텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)