Django 앱을 DOCKER를 이용해서 배포하는방법을 설명하자면 가장중요한건 Docker-compse나 Dockerfile이든 개발환경에서 정상적으로 서버가 동작하는지 확인이 필요하다. 정상적으로 확인이 잘되면 그 이후부터 Docker-Hub를 통해 배포할 수 있다.
## Django를 위한 도커파일
## slim buster를 통해서 이미지 용량을 줄였음.
FROM python:3.8.12-slim-buster
## 환경변수 셋팅
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV TZ=Asia/Seoul
## slim-buster에 필요한 라이브러리 설치
RUN apt-get update && apt-get -y install --no-install-recommends libpq-dev libgtk2.0-dev libgl1-mesa-glx && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get upgrade -y && apt-get install -y gcc
# 폴더 생성
RUN mkdir -p /usr/src/app
# 작업 폴더 설정
WORKDIR /usr/src/app
# 폴더 복사
COPY . .
RUN mv wait-for /bin/wait-for
# pip 업그레이드
RUN pip3 install --upgrade pip
# 캐시를 사용하지 않아서 설치는 오래걸리지만 항상 해당 시점에 맞는 패키지 설치 가능
#RUN pip install -r requirements.txt
RUN pip3 install --no-cache-dir -r requirements.txt
# # 정적 파일 수집
# # 컨테이너 실행 명령 (CMD)
CMD ["sh", "-c", "python manage.py collectstatic --no-input && gunicorn -b 0.0.0.0:8000 CONNEVO_TOOLS.wsgi:application"]
# # 포트 노출
EXPOSE 8000
순서대로
- Dockerfile 검토: Dockerfile에서 Django 애플리케이션을 실행하기 위한 모든 필수 명령이 포함되어 있는지 확인하세요. CMD 명령이 collectstatic을 실행하고 gunicorn으로 애플리케이션을 시작하는 것으로 설정되어 있는지 확인하십시오.
- Docker 이미지 빌드: Dockerfile이 위치한 디렉토리에서 Docker 이미지를 빌드합니다. 예를 들어, 다음 명령을 사용합니다:
docker build -t medikim3551/docker_test .
docker build -t medikim3551/docker_test :v1.0.0 .
-> v1.0.0 은태그명 미리입력해야한다
이 명령은 Dockerfile에 기반하여 **medikim3551/docker_test:
v1.0.0라는 태그를 가진 이미지를 빌드합니다.
- Docker Hub 로그인: Docker CLI를 사용하여 Docker Hub에 로그인합니다.
docker login
로그인 성공 후, Docker Hub 사용자 이름과 비밀번호를 입력합니다.
- Docker 이미지 푸시: 빌드한 이미지를 Docker Hub 리포지토리에 푸시합니다.
docker push medikim3551/docker_test :v1.0.0
- 확인: Docker Hub에서
medikim3551/connveo_gateway
리포지토리를 확인하여 이미지가 올바르게 푸시되었는지 확인합니다.
이 과정을 완료하면, Docker Hub 리포지토리에서 이미지를 다운로드하여 어느 서버에서든 컨테이너로 실행할 수 있습니다.
중요: 공개적으로 접근 가능한 Docker Hub 리포지토리에 민감한 정보가 포함된 이미지를 업로드하지 않도록 주의하십시오. 필요한 경우, 비공개 리포지토리를 사용하거나, 환경 변수와 같은 중요 정보는 Docker 이미지에 직접 포함시키지 않고, 런타임에 주입하는 방식을 사용해야 합니다