Docker로 장고 + NGINX + PostgreSQL 개발 환경 구축
10104 단어 nginxPostgreSQL파이썬도커
소개
개인용 PC에 언어 학습 환경을 준비하면 학습 환경이 불필요하게 된 후에 쓰레기 파일을 많이 할 수 있기 때문에 꽤 장애물이 높게 준비 할 수 없었습니다 만 WSL2 + Docker + VSCode 환경에서 손쉽게 개발 환경을 준비 할 수있는 것 을 알았으므로 서적 등을 참고로 Python 개발 환경 준비해 보았습니다.
실제로 Django 환경을 구축해 보았습니다만 NGINX와 UWSGI의 제휴가 꽤 능숙하지 않고 고생했기 때문에 비망록으로서 남기고 있습니다.
참고 사이트, 서적
장고
htps : // / cs. d 쟈고 p 로지 ct. 코 m/그럼/3.1/인 t로/인 s타르/
NGINX
htps : // / cs. Ngin x. 코 m / 응진 x / 아 d 민구이데 / ぇ b せ r ゔ ぇ r / 아 p가 와와 y
uWSGI 문서
htps : // 우ws 기도 cs. Red d. cs. 이오 / 엔 / 아 st / 쓰리 아 ls / D 쟈고 _ 앙 d _ 긴 긴 x. HTML
htps : // 기주 b. 코 m / ngin x / ngin x / b b / ms r / gon f / uwsgi_Para ms
참고서적
Docker Desktop for Windows / Mac에서 만드는 깨끗한 개발 환경 구축 입문 (Python 버전)
개발 환경 구축
다음의 폴더, 파일 구성으로 개발 환경을 구축해 갑니다.
Django_Dev
│
│ docker-compose.yml
│
├─db
│
├─django
│ │ Dockerfile
│ │ requirements.txt
│ │
│ └─uwsgi
│ uwsgi.ini
│
├─src
│ └─static
│
└─web
│ uwsgi_params
│
└─conf
nginx.conf
docker-compose.yml 파일 만들기
다음 내용으로 docker-compose.yml 파일을 만듭니다.
docker-compose.yml
version: '3.8'
services:
db:
image: postgres:13.1
container_name: postgres
volumes:
- ./db/dbdata:/var/lib/postgresql/data
expose:
- '5432'
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=myappdb
django:
build: ./django
image: django
container_name: django
expose:
- '8080'
volumes:
- ./src:/code
- ./django/uwsgi:/etc/uwsgi/
depends_on:
- db
web:
image: nginx:1.18.0
container_name: nginx
volumes:
- ./web/conf:/etc/nginx/conf.d
- ./web/uwsgi_params:/etc/nginx/uwsgi_params
- ./src/static:/static
ports:
- '80:80'
depends_on:
- django
장고와 uWSGI 구축
파이썬 이미지를 기반으로 Dockerfile에서 장고와 uWSGI 환경을 구축합니다.
Dockerfile
FROM python:3.9.1-buster
RUN apt-get update && apt-get install -y tzdata && rm -rf /var/lib/apt/lists/*
RUN mkdir /etc/uwsgi
RUN mkdir /code
WORKDIR /code
COPY requirements.txt ${PWD}
RUN pip install -r requirements.txt
ENV PYTHONUNBUFFERED 1
ENV TZ=Asia/Tokyo
CMD ["uwsgi","--ini","/etc/uwsgi/uwsgi.ini"]
requirements.txt
Django==3.1.4
psycopg2==2.8.6
uwsgi==2.0.19.1
uwsgi.ini
[uwsgi]
module = myapp.wsgi
socket = :8080
uid = www-data
gid = www-data
chmod-socket = 755
vacuum = true
NGINX 개발 환경 구축
다음 내용으로 nginx.conf, uwsgi_params 파일을 만듭니다.
nginx.conf
upstream django {
server django:8080;
}
server {
listen 80;
server_name dockerhost;
charset utf-8;
location /static {
alias /static;
}
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;
Docker 이미지 빌드
docker-compose.yml 파일이 있는 디렉토리에서 다음 명령을 실행하여 Django와 uWSGI가 설치된 Docker 이미지를 빌드합니다.
docker-compose build
실행 결과
db uses an image, skipping
web uses an image, skipping
Building django
Step 1/10 : FROM python:3.9.1-buster
3.9.1-buster: Pulling from library/python
(snip)
Successfully built a65b92412516
Successfully tagged django:latest
Docker 이미지 생성 확인
다음 명령을 실행하여 django 이미지가 생성되었는지 확인합니다.
docker images
실행 결과
REPOSITORY TAG IMAGE ID CREATED SIZE
django latest a65b92412516 6 minutes ago 936MB ★
python 3.9.1-buster d1eef6fb8dbe 2 weeks ago 885MB
컨테이너 시작
다음 명령을 실행하여 컨테이너를 시작합니다.
docker-compose up -d
실행 결과
Creating network "django_dev_default" with the default driver
Pulling db (postgres:13.1)...
13.1: Pulling from library/postgres
(snip)
Status: Downloaded newer image for nginx:1.18.0
Creating postgres ... done
Creating django ... done
Creating nginx ... done
컨테이너 시작 확인
다음 명령을 실행하여 컨테이너가 시작되었는지 확인합니다.
docker ps -a
실행 결과
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff1bf925d1fe nginx:1.18.0 "/docker-entrypoint.…" 19 seconds ago Up 16 seconds 0.0.0.0:80->80/tcp nginx
9a4e0631ed5d django "uwsgi --ini /etc/uw…" 20 seconds ago Up 17 seconds 8080/tcp django
b3e6d1bd4d77 postgres:13.1 "docker-entrypoint.s…" 20 seconds ago Up 17 seconds 5432/tcp postgres
이미지 파일 확인
docker-compose.yml에 지정된 이미지 파일이 다운로드되었는지 확인합니다.
docker images
실행 결과
REPOSITORY TAG IMAGE ID CREATED SIZE
django latest a65b92412516 10 minutes ago 936MB
postgres 13.1 1f1bd4302537 4 days ago 314MB
python 3.9.1-buster d1eef6fb8dbe 2 weeks ago 885MB
nginx 1.18.0 05f64a802c26 3 weeks ago 133MB
장고 프로젝트 만들기
다음 명령을 실행하여 django 컨테이너에 연결 한 후 myapp 이름으로 프로젝트를 만듭니다.
docker-compose exec django /bin/bash
django-admin startproject myapp .
myapp 프로젝트 관련 파일 작성 확인
다음 명령을 실행하여 파일이 새로 작성되었는지 확인하십시오.
ls -lR
.:
total 4
-rwxr-xr-x 1 root root 661 Jan 4 11:41 manage.py
drwxr-xr-x 1 root root 4096 Jan 4 11:41 myapp
drwxrwxrwx 1 root root 4096 Jan 3 22:44 static
./myapp:
total 8
-rw-r--r-- 1 root root 0 Jan 4 11:41 __init__.py
-rw-r--r-- 1 root root 387 Jan 4 11:41 asgi.py
-rw-r--r-- 1 root root 3059 Jan 4 11:41 settings.py
-rw-r--r-- 1 root root 747 Jan 4 11:41 urls.py
-rw-r--r-- 1 root root 387 Jan 4 11:41 wsgi.py
./static:
total 0
장고 초기 설정
장고를 움직이기 위해 최소한의 초기 설정을합니다.
settings.py
import os
(snip)
ALLOWED_HOSTS = ["*"]
(snip)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myappdb',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
(snip)
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
스틸 파일 집계
다음 명령을 실행하여 정지 파일을 정적 폴더에 집계합니다.
docker-compose exec django /bin/bash
./manage.py collectstatic
실행 결과
132 static files copied to '/code/static'.
서비스 재시작
설정을 반영하기 위해 다음 명령으로 서비스를 다시 시작합니다.
docker-compose restart
Restarting nginx ... done
Restarting django ... done
Restarting postgres ... done
서비스 시작 확인
다음 명령으로 서비스가 시작되었는지 확인합니다.
docker-compose ps -a
Name Command State Ports
----------------------------------------------------------------------
django uwsgi --ini /etc/uwsgi/uws ... Up 8080/tcp
nginx /docker-entrypoint.sh ngin ... Up 0.0.0.0:80->80/tcp
postgres docker-entrypoint.sh postgres Up 5432/tcp
동작 확인
브라우저에 로컬 루프백 주소를 입력하여 다음 화면이 표시되는지 확인합니다.
문제해결
문제가 해결되지 않으면 아래 명령을 사용하여 로그를 확인하면서 문제를 해결하십시오. 현재 설정은 로그를 Windows 측에 저장하는 설정이 아니므로 추가로 Windows 측에 저장하도록 해야 합니다.
docker-compose logs or docker-compose logs コンテナ名
요약
장고 환경을 준비했으므로 웹 응용 프로그램을 만들고 싶습니다.
완성되면 GitHUB에 업로드 예정입니다.
Reference
이 문제에 관하여(Docker로 장고 + NGINX + PostgreSQL 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ftoshiki/items/1cb250a27bbbbaa5c719
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
장고
htps : // / cs. d 쟈고 p 로지 ct. 코 m/그럼/3.1/인 t로/인 s타르/
NGINX
htps : // / cs. Ngin x. 코 m / 응진 x / 아 d 민구이데 / ぇ b せ r ゔ ぇ r / 아 p가 와와 y
uWSGI 문서
htps : // 우ws 기도 cs. Red d. cs. 이오 / 엔 / 아 st / 쓰리 아 ls / D 쟈고 _ 앙 d _ 긴 긴 x. HTML
htps : // 기주 b. 코 m / ngin x / ngin x / b b / ms r / gon f / uwsgi_Para ms
참고서적
Docker Desktop for Windows / Mac에서 만드는 깨끗한 개발 환경 구축 입문 (Python 버전)
개발 환경 구축
다음의 폴더, 파일 구성으로 개발 환경을 구축해 갑니다.
Django_Dev
│
│ docker-compose.yml
│
├─db
│
├─django
│ │ Dockerfile
│ │ requirements.txt
│ │
│ └─uwsgi
│ uwsgi.ini
│
├─src
│ └─static
│
└─web
│ uwsgi_params
│
└─conf
nginx.conf
docker-compose.yml 파일 만들기
다음 내용으로 docker-compose.yml 파일을 만듭니다.
docker-compose.yml
version: '3.8'
services:
db:
image: postgres:13.1
container_name: postgres
volumes:
- ./db/dbdata:/var/lib/postgresql/data
expose:
- '5432'
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=myappdb
django:
build: ./django
image: django
container_name: django
expose:
- '8080'
volumes:
- ./src:/code
- ./django/uwsgi:/etc/uwsgi/
depends_on:
- db
web:
image: nginx:1.18.0
container_name: nginx
volumes:
- ./web/conf:/etc/nginx/conf.d
- ./web/uwsgi_params:/etc/nginx/uwsgi_params
- ./src/static:/static
ports:
- '80:80'
depends_on:
- django
장고와 uWSGI 구축
파이썬 이미지를 기반으로 Dockerfile에서 장고와 uWSGI 환경을 구축합니다.
Dockerfile
FROM python:3.9.1-buster
RUN apt-get update && apt-get install -y tzdata && rm -rf /var/lib/apt/lists/*
RUN mkdir /etc/uwsgi
RUN mkdir /code
WORKDIR /code
COPY requirements.txt ${PWD}
RUN pip install -r requirements.txt
ENV PYTHONUNBUFFERED 1
ENV TZ=Asia/Tokyo
CMD ["uwsgi","--ini","/etc/uwsgi/uwsgi.ini"]
requirements.txt
Django==3.1.4
psycopg2==2.8.6
uwsgi==2.0.19.1
uwsgi.ini
[uwsgi]
module = myapp.wsgi
socket = :8080
uid = www-data
gid = www-data
chmod-socket = 755
vacuum = true
NGINX 개발 환경 구축
다음 내용으로 nginx.conf, uwsgi_params 파일을 만듭니다.
nginx.conf
upstream django {
server django:8080;
}
server {
listen 80;
server_name dockerhost;
charset utf-8;
location /static {
alias /static;
}
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;
Docker 이미지 빌드
docker-compose.yml 파일이 있는 디렉토리에서 다음 명령을 실행하여 Django와 uWSGI가 설치된 Docker 이미지를 빌드합니다.
docker-compose build
실행 결과
db uses an image, skipping
web uses an image, skipping
Building django
Step 1/10 : FROM python:3.9.1-buster
3.9.1-buster: Pulling from library/python
(snip)
Successfully built a65b92412516
Successfully tagged django:latest
Docker 이미지 생성 확인
다음 명령을 실행하여 django 이미지가 생성되었는지 확인합니다.
docker images
실행 결과
REPOSITORY TAG IMAGE ID CREATED SIZE
django latest a65b92412516 6 minutes ago 936MB ★
python 3.9.1-buster d1eef6fb8dbe 2 weeks ago 885MB
컨테이너 시작
다음 명령을 실행하여 컨테이너를 시작합니다.
docker-compose up -d
실행 결과
Creating network "django_dev_default" with the default driver
Pulling db (postgres:13.1)...
13.1: Pulling from library/postgres
(snip)
Status: Downloaded newer image for nginx:1.18.0
Creating postgres ... done
Creating django ... done
Creating nginx ... done
컨테이너 시작 확인
다음 명령을 실행하여 컨테이너가 시작되었는지 확인합니다.
docker ps -a
실행 결과
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff1bf925d1fe nginx:1.18.0 "/docker-entrypoint.…" 19 seconds ago Up 16 seconds 0.0.0.0:80->80/tcp nginx
9a4e0631ed5d django "uwsgi --ini /etc/uw…" 20 seconds ago Up 17 seconds 8080/tcp django
b3e6d1bd4d77 postgres:13.1 "docker-entrypoint.s…" 20 seconds ago Up 17 seconds 5432/tcp postgres
이미지 파일 확인
docker-compose.yml에 지정된 이미지 파일이 다운로드되었는지 확인합니다.
docker images
실행 결과
REPOSITORY TAG IMAGE ID CREATED SIZE
django latest a65b92412516 10 minutes ago 936MB
postgres 13.1 1f1bd4302537 4 days ago 314MB
python 3.9.1-buster d1eef6fb8dbe 2 weeks ago 885MB
nginx 1.18.0 05f64a802c26 3 weeks ago 133MB
장고 프로젝트 만들기
다음 명령을 실행하여 django 컨테이너에 연결 한 후 myapp 이름으로 프로젝트를 만듭니다.
docker-compose exec django /bin/bash
django-admin startproject myapp .
myapp 프로젝트 관련 파일 작성 확인
다음 명령을 실행하여 파일이 새로 작성되었는지 확인하십시오.
ls -lR
.:
total 4
-rwxr-xr-x 1 root root 661 Jan 4 11:41 manage.py
drwxr-xr-x 1 root root 4096 Jan 4 11:41 myapp
drwxrwxrwx 1 root root 4096 Jan 3 22:44 static
./myapp:
total 8
-rw-r--r-- 1 root root 0 Jan 4 11:41 __init__.py
-rw-r--r-- 1 root root 387 Jan 4 11:41 asgi.py
-rw-r--r-- 1 root root 3059 Jan 4 11:41 settings.py
-rw-r--r-- 1 root root 747 Jan 4 11:41 urls.py
-rw-r--r-- 1 root root 387 Jan 4 11:41 wsgi.py
./static:
total 0
장고 초기 설정
장고를 움직이기 위해 최소한의 초기 설정을합니다.
settings.py
import os
(snip)
ALLOWED_HOSTS = ["*"]
(snip)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myappdb',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
(snip)
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
스틸 파일 집계
다음 명령을 실행하여 정지 파일을 정적 폴더에 집계합니다.
docker-compose exec django /bin/bash
./manage.py collectstatic
실행 결과
132 static files copied to '/code/static'.
서비스 재시작
설정을 반영하기 위해 다음 명령으로 서비스를 다시 시작합니다.
docker-compose restart
Restarting nginx ... done
Restarting django ... done
Restarting postgres ... done
서비스 시작 확인
다음 명령으로 서비스가 시작되었는지 확인합니다.
docker-compose ps -a
Name Command State Ports
----------------------------------------------------------------------
django uwsgi --ini /etc/uwsgi/uws ... Up 8080/tcp
nginx /docker-entrypoint.sh ngin ... Up 0.0.0.0:80->80/tcp
postgres docker-entrypoint.sh postgres Up 5432/tcp
동작 확인
브라우저에 로컬 루프백 주소를 입력하여 다음 화면이 표시되는지 확인합니다.
문제해결
문제가 해결되지 않으면 아래 명령을 사용하여 로그를 확인하면서 문제를 해결하십시오. 현재 설정은 로그를 Windows 측에 저장하는 설정이 아니므로 추가로 Windows 측에 저장하도록 해야 합니다.
docker-compose logs or docker-compose logs コンテナ名
요약
장고 환경을 준비했으므로 웹 응용 프로그램을 만들고 싶습니다.
완성되면 GitHUB에 업로드 예정입니다.
Reference
이 문제에 관하여(Docker로 장고 + NGINX + PostgreSQL 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ftoshiki/items/1cb250a27bbbbaa5c719
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Django_Dev
│
│ docker-compose.yml
│
├─db
│
├─django
│ │ Dockerfile
│ │ requirements.txt
│ │
│ └─uwsgi
│ uwsgi.ini
│
├─src
│ └─static
│
└─web
│ uwsgi_params
│
└─conf
nginx.conf
version: '3.8'
services:
db:
image: postgres:13.1
container_name: postgres
volumes:
- ./db/dbdata:/var/lib/postgresql/data
expose:
- '5432'
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=myappdb
django:
build: ./django
image: django
container_name: django
expose:
- '8080'
volumes:
- ./src:/code
- ./django/uwsgi:/etc/uwsgi/
depends_on:
- db
web:
image: nginx:1.18.0
container_name: nginx
volumes:
- ./web/conf:/etc/nginx/conf.d
- ./web/uwsgi_params:/etc/nginx/uwsgi_params
- ./src/static:/static
ports:
- '80:80'
depends_on:
- django
FROM python:3.9.1-buster
RUN apt-get update && apt-get install -y tzdata && rm -rf /var/lib/apt/lists/*
RUN mkdir /etc/uwsgi
RUN mkdir /code
WORKDIR /code
COPY requirements.txt ${PWD}
RUN pip install -r requirements.txt
ENV PYTHONUNBUFFERED 1
ENV TZ=Asia/Tokyo
CMD ["uwsgi","--ini","/etc/uwsgi/uwsgi.ini"]
Django==3.1.4
psycopg2==2.8.6
uwsgi==2.0.19.1
[uwsgi]
module = myapp.wsgi
socket = :8080
uid = www-data
gid = www-data
chmod-socket = 755
vacuum = true
upstream django {
server django:8080;
}
server {
listen 80;
server_name dockerhost;
charset utf-8;
location /static {
alias /static;
}
location / {
uwsgi_pass django;
include /etc/nginx/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;
docker-compose build
db uses an image, skipping
web uses an image, skipping
Building django
Step 1/10 : FROM python:3.9.1-buster
3.9.1-buster: Pulling from library/python
(snip)
Successfully built a65b92412516
Successfully tagged django:latest
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
django latest a65b92412516 6 minutes ago 936MB ★
python 3.9.1-buster d1eef6fb8dbe 2 weeks ago 885MB
docker-compose up -d
Creating network "django_dev_default" with the default driver
Pulling db (postgres:13.1)...
13.1: Pulling from library/postgres
(snip)
Status: Downloaded newer image for nginx:1.18.0
Creating postgres ... done
Creating django ... done
Creating nginx ... done
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff1bf925d1fe nginx:1.18.0 "/docker-entrypoint.…" 19 seconds ago Up 16 seconds 0.0.0.0:80->80/tcp nginx
9a4e0631ed5d django "uwsgi --ini /etc/uw…" 20 seconds ago Up 17 seconds 8080/tcp django
b3e6d1bd4d77 postgres:13.1 "docker-entrypoint.s…" 20 seconds ago Up 17 seconds 5432/tcp postgres
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
django latest a65b92412516 10 minutes ago 936MB
postgres 13.1 1f1bd4302537 4 days ago 314MB
python 3.9.1-buster d1eef6fb8dbe 2 weeks ago 885MB
nginx 1.18.0 05f64a802c26 3 weeks ago 133MB
docker-compose exec django /bin/bash
django-admin startproject myapp .
ls -lR
.:
total 4
-rwxr-xr-x 1 root root 661 Jan 4 11:41 manage.py
drwxr-xr-x 1 root root 4096 Jan 4 11:41 myapp
drwxrwxrwx 1 root root 4096 Jan 3 22:44 static
./myapp:
total 8
-rw-r--r-- 1 root root 0 Jan 4 11:41 __init__.py
-rw-r--r-- 1 root root 387 Jan 4 11:41 asgi.py
-rw-r--r-- 1 root root 3059 Jan 4 11:41 settings.py
-rw-r--r-- 1 root root 747 Jan 4 11:41 urls.py
-rw-r--r-- 1 root root 387 Jan 4 11:41 wsgi.py
./static:
total 0
import os
(snip)
ALLOWED_HOSTS = ["*"]
(snip)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myappdb',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
(snip)
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
docker-compose exec django /bin/bash
./manage.py collectstatic
132 static files copied to '/code/static'.
docker-compose restart
Restarting nginx ... done
Restarting django ... done
Restarting postgres ... done
docker-compose ps -a
Name Command State Ports
----------------------------------------------------------------------
django uwsgi --ini /etc/uwsgi/uws ... Up 8080/tcp
nginx /docker-entrypoint.sh ngin ... Up 0.0.0.0:80->80/tcp
postgres docker-entrypoint.sh postgres Up 5432/tcp
docker-compose logs or docker-compose logs コンテナ名
장고 환경을 준비했으므로 웹 응용 프로그램을 만들고 싶습니다.
완성되면 GitHUB에 업로드 예정입니다.
Reference
이 문제에 관하여(Docker로 장고 + NGINX + PostgreSQL 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ftoshiki/items/1cb250a27bbbbaa5c719텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)