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"
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/
참고 : https://velog.io/@wind1992/Django-Docker%EB%A1%9C-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0
'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 |
댓글