[DOCKER] Docker django 배포
1. 개발환경 컨테이너(server1) 에서 django 프로젝트 생성
- mkdir workspace
- cd workspace
> workspace 디렉토리 생성 후 이동
- django-admin startproject myapp
> django project 생성
2. django 네트워크 외부 접근 허용 설정
- cd myapp/myapp
> 생성된 프로젝트 디렉토리로 이동
- vim settings.py
> 설정 파일 생성
- 위와 같이 코드를 수정한다.
> 입력할 곳에 커서를 놓고 i 를 누른 후 입력, 입력 후에는 cntl + c 입력 후 :w 를 입력하여 저장 후 :q 로 닫기
3. django DB 설정
- 생성한 postgreSQL 컨테이너를 (server01-postgres) 연동하기 위해 settings.py 를 수정한다
- vim settings.py
- 다음과 같이 설정 파일 수정 후 저장
4. nginx 이미지 생성
- host 로 이동한다.
> exit
- mkdir server01-workspace
> nginx 이미지 생성을 위해서 디렉토리를 생성한다.
- cd server01-workspace
- mkdir mynginx
- cd mynginx
- vim DockerFile
- 아래와 같이 작성
- vim default.conf
- 아래와 같이 작성
- docker image build . -t mynginx
> 이미지 빌드
5. django 이미지 생성
- cd ../
> 상위 디렉토리로 이동한다.
- cd ../
> workspace 디렉토리로 이동한다.
- vim requirements.txt
- django==4.2.13
- gunicorn==22.0.0
- psycopg2==2.9.9
> 필요한 django 와 gunicorn의 version을 입력한다.
- vim Dockerfile
> 도커 이미지 생성 관련 설정
- 다음과 같이 스크립트 작성
- exit
> host 로 이동
- docker cp 대상컨테이너주소:/workspace workspace
> 컨테이너에서 작업한 파일을 Host 에 복사
- docker image build . -t myweb
> 도커 이미지 생성
6. django, nginx, postgreSQL 연동
- docker network create mynetwork
> 네트워크 생성
- docker volume create myvloume
> DB 볼륨 생성
- 다음 명령어를 입력하여 postgreSQL 실행
docker container run --name mypostgres \
--network mynetwork \
-e POSTGRES_PASSWORD=admin \
--mount type=volume,source=myvolume,target=/var/lib/postgresql/data \
-d postgres
- 다음 명령어를 입력하여 django 실행
docker container run -d --name mydjango --network mynetwork myweb
- 다음 명령어를 입력하여 nginx 실행
docker container run -d --name mynginx --network mynetwork -p 80:80 mynginx
7. 실행 확인