일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 머신러닝
- pandas
- sklearn
- 판다스
- langchain
- fastapi #python웹개발
- chatGPT
- python 정렬
- programmablesearchengine
- NLP
- 비지도학습
- 챗gpt
- pytorch
- fastapi #파이썬웹개발
- OpenAIAPI
- 사이킷런
- 파이토치기본
- 판다스 데이터정렬
- 자연어분석
- 파이토치
- 파이썬
- HTML
- 파이썬웹개발
- Python
- deeplearning
- 랭체인
- MachineLearning
- 딥러닝
- konlpy
- fastapi
- Today
- Total
Data Navigator
Docker로 django, gunicorn, postgreSQL, Nginx 연동하기 본문
Docker로 django, gunicorn, postgreSQL, Nginx 연동하기
1. miniforge 설치하고 가상환경 만들기
1) miniforge 설치는 아래의 링크 참조
https://datanavigator.tistory.com/65
2) 파이썬 3.11.6 버전으로 가상환경 만들고 가상환경 진입하기
conda create -n docker_web python==3.11.6
conda activate docker_web
2. django, gunicorn, psycopg2-binary 설치
pip install django
pip install gunicorn
pip install psycopg2-binary
3. 작업 디렉토리 만들고 장고 프로젝트 실행하기
1) 작업디릭토리 만들고 장고프로젝트 실행
mkdir work
cd work
django-admin startproject myapp/
2) settings.py 수정
ls
cd myapp/myapp
vim settings.py
3) settings.py에 ALLOWED_HOSTS = ['*']로 수정
# /myapp/myapp/settings.py
ALLOWED_HOSTS = ['*']
4) work/myapp 으로 나가서 마이그레이트 하기
cd ..
python manage.py migrate
5) 장고 서버 실행하기
python mamange.py runserver 0.0.0.0:8000 으로 장고 서버 실행
python manage.py runserver 0.0.0.0:8000
6) 웹브라우저를 실행시키고 localhost:8000 으로 접속하기
7) 접속 확인 후 ctrl + c 로 서버 종료
8) work 디렉토리로 이동
cd ..
ls
4. django 이미지 빌드하기
1) requirements.txt 만들기
pip freeze > requirements.txt
cat requirements.txt
2) Dockerfile 만들기
(1) vim Dockerfile
vim Dockerfile
(2) vim 편집기가 열리면 아래와 같이 작성한다.
FROM python:3.11.6
WORKDIR /usr/src/app
COPY . .
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
WORKDIR ./myapp
CMD python manage.py runserver 0.0.0.0:8000
EXPOSE 8000
(3) :wq로 저장후 나가기
(4) ls 로 Dockerfile, myapp 디렉토리, requirements.txt 가 있는지 확인한다.
3) docker image 빌드하기
docker image build . -t myweb01
docker image build . -t myweb01
이미지 생성 확인 docker image ls
docker image ls
4) django 컨테이너 실행하기
docker container run -d -p 8000:8000 myweb01
docker container run -d -p 8000:8000 myweb01
5) 웹브라우저에서 localohost:8000으로 접속해 페이지 로딩이 되는지 확인
5. Nginx container 만들기
1) Nginx 용 디렉토리 만들기
# /work 에서 작업
mkdir nginx
cd nginx
2) Nginx용 Dockerfile 만들기
vim Dockerfile
vim Dockerfile
아래의 내용을 작성한다.
FROM nginx:1.25.3
CMD ["nginx", "-g", "daemon off;"]
:wq로 저장후 나감
3) Nginx 이미지 build
docker image build . -t mynginx01
docker container ls로 mynginx01 이미지 생성 확인
docker container ls
Nginx 컨테이너 실행
docker container run -p 80:80 -d mynginx01
웹브라우저에 localhost로 접속 :80은 생략 가능
6. django에 gunicorn 추가하고 재빌드 후 Nginx와 연동하기
1) work 디렉토리로 이동
cd ..
ls
2) mydjango01 디렉토리를 만들고 Dockerfile, myapp 디렉토리, requirements.txt 옮기기
mkdir mydjango01
mv ./Dockerfile myapp requirements.txt ./mydjango01
ls
3) mydjango01로 들어가 Dockerfile 수정
cd mydjango01
vim Dockerfile
아래와 같이 수정한다. CMD 부분만 변경한다.
FROM python:3.11.6
WORKDIR /usr/src/app
COPY . .
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
WORKDIR ./myapp
CMD gunicorn --bind 0.0.0.0:8000 myapp.wsgi:application
EXPOSE 8000
4) django 이미지를 재빌드한다.
docker image build . -t myweb02
docker image ls
5) Nginx 에 default.conf 추가 및 Dockerfile 수정
nginx 디렉토리로 이동
cd ..
cd nginx
default.conf 파일 생성
vim default.conf
아래의 내용을 작성한다.
upstream myweb{
server djangotest:8000;
}
server{
listen 80;
server_name localhost;
location /{
proxy_pass http://myweb;
}
}
ls 로 파일 생성 확인
ls
vim 편집기로 Dockerfile 내용 수정
vim Dockerfile
아래의 내용을 입력한다
FROM nginx:1.25.3
RUN rm /etc/nginx/conf.d/default.conf
COPY default.conf /etc/nginx/conf.d/
CMD ["nginx", "-g", "daemon off;"]
6) 수정한 내용으로 Nginx 이미지 재빌드
docker image build . -t mynginx02
docker image ls
7) 새로운 네트워크 생성
docker network create mynetwork02
docker network ls
8) django 컨테이너 실행
docker container run -d --name djangotest --network mynetwork02 myweb02
9) Nginx 컨테이너 실행
docker container run -d --name nginxtest --network mynetwork02 -p 80:80 mynginx02
docker container ls
10) 웹브라우저에서 localhost로 접속 후 장고 페이지 로딩 확인
djangotest 컨테이너와 nginxtest 컨테이너가 정상적으로 동작하고 있으면 웹브라우저에서 localhost로 접속하면 django 페이지가 정상적으로 로딩된다.
7. PostgreSQL image 생성 및 container 실행
1) work 디렉토리 아래에 mypostgre 디렉토리를 만들고 디렉토리 안에 Dockerfile 생성
# /work 에서 실행
mkdir mypostgre
cd mypostgre
vim Dockerfile
Dockerfile에 아래와 같이 작성한다
FROM postgres:15.4
2) mypostgres03 이름으로 이미지를 빌드한다.
docker image build . -t mypostgres03
docker image ls
docker image ls로 mypostgres03 이 만들어져있는지 확인한다.
3) postgreSQL 데이터 저장을 위해 myvolume03 생성하기
docker volume create myvolume03
4) postgres03 컨테이너 실행하기
docker container run -e POSTGRES_PASSWORD=mysecretpassword --mount type=volume,source=myvolume03,target=/var/lib/postgresql/data -d mypostgres03
5) docker container ls로 컨테이너 동작 확인
docker container ls
6) 모든 container 정지
docker stop $(docker ps -q)
7) 모든 continer 삭제
docker rm $(docker ps -aq)
8. Django, Nginx, PostgresSQL 모두 연동
1) PostgreSQL 연동을 위한 Django settings.py 수정
# work 에서 시작
vim mydjango01/myapp/myapp/settings.py
settings.py 내용 중 DATABASES = 부분을 찾아 아래와 같이 수정
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'mysecretpassword',
'HOST': 'postgrestest',
'PORT': 5432,
}
}
2) 수정된 Django 를 myweb03 으로 이미지 빌드
cd mydjango01
docker image build . -t myweb03
docker image ls
3) Nginx를 mynginx03으로 재빌드
# work에서 작업
cd nginx
docker image build . -t mynginx03
docker image ls
4) Django, Nginx, PostgresSQL 연동을 위한 mynetwork03 생성
docker network create mynetwork03
docker network ls
5) PostgreSQL container 실행
docker container run --name postfrestest \
--network mynetwork03 \
-e POSTGRES_PASSWORD=mysecretpassword \
--mount type=volume,source=myvolume03,target=/var/lib/postgreswl/data \
-d mypostgres03
6) Django contaier 실행
docker container run -d --name djangotest --network mynetwork03 myweb03
7) Nginx 컨테이너 실행
docker container run -d --name nginxtest --network mynetwork03 -p 80:80 mynginx03
8) docker container ls로 모든 컨테이너 작동 확인
docker container ls
9) 웹브라우저에서 localhost 로 접속후 장고 페이지가 보이면 성공
'Python' 카테고리의 다른 글
OpenAI API 를 이용한 챗봇 만들기02 - OpenAI API 파라미터 정리 (3) | 2024.11.08 |
---|---|
OpenAI API 를 이용한 챗봇 만들기01 - OpenAI 계정등록하고 API key 발급 후 테스트 하기 (0) | 2024.11.07 |
conda 가상환경 패키지를 저장하고 다른 컴퓨터에 똑같이 설정하기 (0) | 2024.07.09 |
tensorflow docker를 이용해 gpu 이용하기 + windows의 폴더 공유하기 (0) | 2024.04.16 |
git bash에 anaconda 경로 설정하기 (0) | 2024.02.20 |