1. EC2에 Docker 설치하기
ssh [EC2 서비스명]
- EC2 서비스 접속
sudo yum update -y
- yum 업데이트
sudo yum install docker -y
- docker 설치
docker -v
- docker 버전 확인
sudo service docker start
- docker 실행
2. Docker 이미지 생성
pip3 --list=format=freeze > requirements.txt
- requirements.txt 생성
FROM python:3
ENV PYTHONUNBUFFERED 1
WORKDIR /web
COPY . .
RUN pip install --upgrate pip
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["bash", "-c", "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"]
- 프로젝트 루트 리렉토리 위치에 Dockerfile 생성
- Dockerfile은 도커 이미지를 생성하기 위한 DSL(Domain Specific Language)
docker login
- docker 접속
docker build [옵션] [도커 계정]/[프로젝트명]:[버전] [경로]
docker build .
docker build -t dheldh66/studioapi:0.1.0 .
- build 하면 도커 이미지가 생성된다.
- argument에 들어가는 문자열은 lowercase만 된다..
* Could not build wheels for backports.zoneinfo, which is required to install pyproject.toml-based projects 와 같은 에러가 뜬다면?
backports.zoneinfo==0.2.1
- requirements.txt에 backports.zoneinfo의 version이 0.2.1로 설정되어있다면 아래와 같이 수정해주자
backports.zoneinfo==0.2.1;python_version<"3.9"
ERROR: Could not build wheels for backports.zoneinfo, which is required to install pyproject.toml-based projects
The Heroku Build is returning this error when I'm trying to deploy a Django application for the past few days. The Django Code and File Structure are the same as Django's Official Documentation and
stackoverflow.com
docker images
- 명령어를 통해 생성된 이미지를 확인할 수 있고,
- 생성된 이미지를 로컬에서 실행해서 Django 버전이 설치되어있는지 확인할 수 있다.
docker run -it [이미지 ID]
4. 빌드한 이미지 실행시키기
docker run --name [컨테이너명] -d -p [호스트 포트]:[컨테이너 포트] [docker 계정]/[프로젝트명]:[버전]
docker run --name stock01 -d -p 8000:8000 dheldh66/studioapi:0.1.0
docker ps -a
현재 실행되고 있는 프로세스를 조회해서 방금 실행한 이미지가 올라간 컨테이너가 정상적으로 실행되고 있는지 확인 가능하다.
5. 로컬에서 빌드한 이미지 도커허브로 푸시하기
docker push [도커 계정]/[프로젝트명]:[버전]
docker push dheldh66/studioapi:0.1.0
6. EC2에 도커로 배포하기
sudo docker login
- 도커 로그인
sudo docker pull [도커 계정]/[프로젝트명]:[버전]
sudo docker pull dheldh66/studioapi:0.1.0
- 도커 허브에서 로컬에서 생성했던 이미지 pull
sudo docker run --name [컨테이너명] -d -p [호스트 포트]:[컨테이너 포트] [도커 계정]/[프로젝트명]:[버전]
sudo docker run --name studioapi1 -d -p 8000:8000 dheldh66/studioapi:0.1.0
이미지 실행
참고 : https://www.daleseo.com/docker-compose-django/
Docker Compose로 Django 프로젝트 셋업
Engineering Blog by Dale Seo
www.daleseo.com
참고 : https://velog.io/@wind1992/Django-Docker%EB%A1%9C-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0
Django : Docker로 배포하기
Why Docker? 팀프로젝트를 하면서 개발용 서버와 프론트와 통신하는 서버(EC2)를 분리하여 작업을 하였다. EC2의 프리티어 용량을 8기가로 적게만들기도 했고, 통신도 많이하다보니 쉽게 로그파일이
velog.io
'Web Programming > Server' 카테고리의 다른 글
WSGI, WAS, CGI (0) | 2022.07.05 |
---|---|
Github Action (0) | 2022.07.03 |
도커(Docker) (0) | 2021.10.17 |
쿠버네티스 컨피그맵 (0) | 2021.10.16 |
쿠버네티스 인그레스 (0) | 2021.10.16 |
댓글