본인이 공부하기 위해 작성한 것이므로 오류가 있을 수 있습니다.
1. .env 파일 생성
mange.py 파일이 있는 경로에서 .env 파일을 새로 생성한다.
위의 라이브러리를 설치한 다음, settings.py를 수정해야한다.pip install django-environ # 설치
위의 코드를 settings.py 파일을 수정.# config/settings.py import environ, os env = environ.Env( DEBUG=(bool, False) ) # 경로에 있는 .env 파일 연동 environ.Env.read_env( env_file=os.path.join(BASE_DIR, '.env') ) # 장고 스페셜 키를 .env 파일에서 가져오기 SECRET_KEY = env('SECRET_KEY')
# .env 파일 DEBUG=1 SECRET_KEY="KEY"
.env 파일을 새로 생성하고 위의 코드들을 입력해서 저장한다.
추가적으로 DB의 정보들과 allow_host도 입력이 가능하다.
2. Dockerfile 생성
도커파일을 만들기 전에, 설치했던 모든 라이브러리를 저장할 txt파일을 만들 것이다.
pip freeze > requirements.txt
그 다음에, 도커파일을 생성한다.
FROM python:3.9.0 : 도커가 파이썬 기본 이미지를 불러온다.FROM python:3.9.0 ENV PYTHONUNBUFFERED=1 COPY . /app/server/madup WORKDIR /app/server/madup RUN apt-get update RUN apt-get install -y --no-install-recommends gcc RUN pip install -r requirements.txt
ENV PYTHONDONTWRITEBYTECODE 1 : 도커를 이용할 때 .pyc 파일이 필요하지 않으므로 생성하지 않도록 한다.
ENV PYTHONUNBUFFERED=1 : 파이썬 로그가 버퍼링 없이 즉각적으로 출력하게 만든다.
COPY . /app/server/madup : 로컬 컴퓨터의 현재 위치에 있는 파일을 모두 작업 폴더(WORKDIR)로 복사한다.
WORKDIR /app/server/madup : 프로젝트의 작업 폴더를 /app/server/madup으로 지정한다.
RUN apt-get updateRUN apt-get install -y --no-install-recommends gccRUN pip install -r requirements.txt
: requirements.txt에 나열된 라이브러리를 설치한다.
2. docker-compose.yml 파일 생성
도커 컴포즈 파일을 사용하면 컨테이너 여러 개를 한 번에 실행시킬 수 있다.
# docker-compose.yml # version: '3' services: web: build: . command: - bash - -c - | python manage.py migrate python manage.py runserver 0.0.0.0:8000 volumes: - .:/app/server/madup ports: - 8000:8000 env_file: - ./.env depends_on: - db restart: always db: image: mysql:5.7 platform: linux/amd64 container_name: mysql volumes: - data:/var/lib/mysql/ environment: MYSQL_DATABASE: 'madup' MYSQL_USER: 'root' MYSQL_ROOT_PASSWORD: '1234' MYSQL_PASSWORD: '1234' ports: - 3306:3306 command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci restart: always volumes: data:
version: '3' : 도커 컴포즈 파일 포맷을 최신 버전으로 사용하겠다는 의미이다. 특별한 이유가 없다면 3으로 설정.
build: . : 현재 폴더를 build한다. 앞에서 만든 도커파일이 현재 폴더에 있으므로 이 파일을 이용해 컨테이너 이미지를 만든다.
command: - bash - -c - | python manage.py migrate python manage.py runserver 0.0.0.0:8000
: command로 터미널에서 직접 입력했던 서버 실행 명령을 대신한다.
volumes : 로컬 컴퓨터의 폴더와 도커의 폴더를 연결한다.
env_file: - ./.env : 다른 사람들에게 보이지 않도록 생성했던 .env 파일을 지정.
. . .
추가적으로 settings.py의 DATABASE 옵션도 변경해주어야 한다.
# config.settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'madup', 'USER': 'root', 'PASSWORD': '1234', 'HOST': 'db', # <--- 이 부분! docker-compose의 db: 이름으로 정해둔 부분으로 이름을 바꾼다. 'PORT': '3306', 'OPTIONS': { # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", # 추가, 만약에 이 부분 때문에 오류가 난다면, 이 라인을 지우고 다시 시도해주세요. 'charset': 'utf8mb4', 'use_unicode': True, }, } }
3. 실행
# 실행 docker-compose up -d # 중지 docker-compose down # 빌드 및 실행 docker-compose up -d --build
'DevOps > Docker' 카테고리의 다른 글
[Docker] ports (docker run -p)와 Dockerfile의 EXPOSE 차이점 (0) | 2022.10.26 |
---|---|
[Docker] 로컬에서 docker-compose를 이용한 Gunicorn 적용 (2) (0) | 2022.06.02 |
[Docker] Docker 이미지 종류 (with. Python) (0) | 2022.06.01 |
[Docker] GCP 에서 docker로 django 웹 서버 구동 (0) | 2022.04.04 |
[Docker] django 터미널에서 docker-compose를 이용하여 개발환경 구성하기 (0) | 2022.04.03 |