Skip to content

Commit

Permalink
Merge pull request #67 from OZ-Coding-School/feat/database_edit
Browse files Browse the repository at this point in the history
설정관련 파일 배포용으로
  • Loading branch information
dayeonkimm authored Jul 30, 2024
2 parents cb42610 + eb08ccf commit 38ee1e1
Show file tree
Hide file tree
Showing 3 changed files with 125 additions and 101 deletions.
97 changes: 56 additions & 41 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# 배포용

FROM python:3.11-alpine3.19

# LABEL 명령어는 이미지에 메타데이터를 추가합니다. 여기서는 이미지의 유지 관리자를 "dayeonkim"로 지정하고 있습니다.
Expand All @@ -8,58 +10,24 @@ LABEL maintainer="frog"
# 이는 Docker 컨테이너에서 로그를 더 쉽게 볼 수 있게 합니다.
ENV PYTHONUNBUFFERED 1

# # 로컬 파일 시스템의 requirements.txt 파일을 컨테이너의 /tmp/requirements.txt로 복사합니다.
# # 이 파일은 필요한 Python 패키지들을 명시합니다.
# COPY ./requirements.txt /tmp/requirements.txt
# COPY ./potato_project /app
# WORKDIR /app
# EXPOSE 8000

# # ARG DEV=false

# RUN python -m venv /py && \
# /py/bin/pip install --upgrade pip && \
# /py/bin/pip install -r /tmp/requirements.txt && \
# apk add --update --no-cache jpeg-dev && \
# apk add --update --no-cache --virtual .tmp-build-deps \
# build-base musl-dev zlib zlib-dev linux-headers && \
# # if [ $DEV = "true" ]; \
# # then /py/bin/pip install -r /tmp/requirements.dev.txt ; \
# # fi && \
# rm -rf /tmp && \
# apk del .tmp-build-deps && \
# adduser \
# --disabled-password \
# --no-create-home \
# django-user

# ENV PATH="/py/bin:$PATH"

# USER django-user

# # 이 명령어를 추가하여 pytest를 설치합니다.
# RUN /py/bin/pip install pytest pytest-django


# 로컬 파일 시스템의 requirements.txt 파일을 컨테이너의 /tmp/requirements.txt로 복사합니다.
# 이 파일은 필요한 Python 패키지들을 명시합니다.
COPY ./requirements.txt /tmp/requirements.txt
COPY ./requirements.dev.txt /tmp/requirements.dev.txt
COPY ./potato_project /app
WORKDIR /app
EXPOSE 8000

ARG DEV=false
# ARG DEV=false

RUN python -m venv /py && \
/py/bin/pip install --upgrade pip && \
/py/bin/pip install -r /tmp/requirements.txt && \
apk add --update --no-cache postgresql-client jpeg-dev && \
apk add --update --no-cache jpeg-dev && \
apk add --update --no-cache --virtual .tmp-build-deps \
build-base postgresql-dev musl-dev zlib zlib-dev linux-headers && \
if [ $DEV = "true" ]; \
then /py/bin/pip install -r /tmp/requirements.dev.txt ; \
fi && \
build-base musl-dev zlib zlib-dev linux-headers && \
# if [ $DEV = "true" ]; \
# then /py/bin/pip install -r /tmp/requirements.dev.txt ; \
# fi && \
rm -rf /tmp && \
apk del .tmp-build-deps && \
adduser \
Expand All @@ -72,4 +40,51 @@ ENV PATH="/py/bin:$PATH"
USER django-user

# 이 명령어를 추가하여 pytest를 설치합니다.
RUN /py/bin/pip install pytest pytest-django
RUN /py/bin/pip install pytest pytest-django


# 개발용

# FROM python:3.11-alpine3.19

# # LABEL 명령어는 이미지에 메타데이터를 추가합니다. 여기서는 이미지의 유지 관리자를 "dayeonkim"로 지정하고 있습니다.
# LABEL maintainer="frog"

# # 환경 변수 PYTHONUNBUFFERED를 1로 설정합니다.
# # 이는 Python이 표준 입출력 버퍼링을 비활성화하게 하여, 로그가 즉시 콘솔에 출력되게 합니다.
# # 이는 Docker 컨테이너에서 로그를 더 쉽게 볼 수 있게 합니다.
# ENV PYTHONUNBUFFERED 1


# # 로컬 파일 시스템의 requirements.txt 파일을 컨테이너의 /tmp/requirements.txt로 복사합니다.
# # 이 파일은 필요한 Python 패키지들을 명시합니다.
# COPY ./requirements.txt /tmp/requirements.txt
# COPY ./requirements.dev.txt /tmp/requirements.dev.txt
# COPY ./potato_project /app
# WORKDIR /app
# EXPOSE 8000

# ARG DEV=false

# RUN python -m venv /py && \
# /py/bin/pip install --upgrade pip && \
# /py/bin/pip install -r /tmp/requirements.txt && \
# apk add --update --no-cache postgresql-client jpeg-dev && \
# apk add --update --no-cache --virtual .tmp-build-deps \
# build-base postgresql-dev musl-dev zlib zlib-dev linux-headers && \
# if [ $DEV = "true" ]; \
# then /py/bin/pip install -r /tmp/requirements.dev.txt ; \
# fi && \
# rm -rf /tmp && \
# apk del .tmp-build-deps && \
# adduser \
# --disabled-password \
# --no-create-home \
# django-user

# ENV PATH="/py/bin:$PATH"

# USER django-user

# # 이 명령어를 추가하여 pytest를 설치합니다.
# RUN /py/bin/pip install pytest pytest-django
95 changes: 50 additions & 45 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,4 @@
# # version: "3.11"
# services:
# app:
# build:
# context: .
# args:
# - DEV=true
# ports:
# - "8000:8000"
# volumes:
# - ./potato_project:/app
# command: >
# sh -c "python manage.py makemigrations &&
# python manage.py migrate &&
# python manage.py runserver --noreload 0.0.0.0:8000"
# environment:
# - DB_HOST=${RDS_HOSTNAME} # RDS 엔드포인트
# - DB_NAME=${RDS_DB_NAME}
# - DB_USER=${RDS_USERNAME}
# - DB_PASSWORD=${RDS_PASSWORD}
# env_file:
# - .env
# 배포용

# version: "3.11"
services:
Expand All @@ -30,35 +9,61 @@ services:
- DEV=true
ports:
- "8000:8000"
- "3000:3000" # debugger
volumes:
- ./potato_project:/app
command: >
sh -c "python manage.py wait_for_db &&
python manage.py makemigrations &&
python manage.py migrate &&
python -u manage.py runserver --noreload 0.0.0.0:8000"
sh -c "python manage.py makemigrations &&
python manage.py migrate &&
python manage.py runserver --noreload 0.0.0.0:8000"
environment:
- DB_HOST=${DB_HOST}
- DB_NAME=${DB_NAME}
- DB_USER=${DB_USER}
- DB_PASSWORD=${DB_PASSWORD}
- PYDEVD_DISABLE_FILE_VALIDATION=1
- DB_HOST=${RDS_HOSTNAME} # RDS 엔드포인트
- DB_NAME=${RDS_DB_NAME}
- DB_USER=${RDS_USERNAME}
- DB_PASSWORD=${RDS_PASSWORD}
env_file:
- .env
depends_on:
- db
- .env


# 개발용

# # version: "3.11"
# services:
# app:
# build:
# context: .
# args:
# - DEV=true
# ports:
# - "8000:8000"
# - "3000:3000" # debugger
# volumes:
# - ./potato_project:/app
# command: >
# sh -c "python manage.py wait_for_db &&
# python manage.py makemigrations &&
# python manage.py migrate &&
# python -u manage.py runserver --noreload 0.0.0.0:8000"
# environment:
# - DB_HOST=${DB_HOST}
# - DB_NAME=${DB_NAME}
# - DB_USER=${DB_USER}
# - DB_PASSWORD=${DB_PASSWORD}
# - PYDEVD_DISABLE_FILE_VALIDATION=1
# env_file:
# - .env
# depends_on:
# - db


db: # PostgreSQL Database
image: postgres:16-alpine
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
env_file:
- .env
# db: # PostgreSQL Database
# image: postgres:16-alpine
# volumes:
# - ./data/db:/var/lib/postgresql/data
# environment:
# - POSTGRES_DB=${POSTGRES_DB}
# - POSTGRES_USER=${POSTGRES_USER}
# - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
# env_file:
# - .env


34 changes: 19 additions & 15 deletions potato_project/app/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,29 +104,33 @@
# WSGI 애플리케이션 설정
WSGI_APPLICATION = "app.wsgi.application"

# # 데이터베이스 설정
# DATABASES = {
# "default": {
# "ENGINE": "django.db.backends.postgresql",
# "HOST": os.environ.get("RDS_HOSTNAME"),
# "NAME": os.environ.get("RDS_DB_NAME"),
# "USER": os.environ.get("RDS_USERNAME"),
# "PASSWORD": os.environ.get("RDS_PASSWORD"),
# "PORT": os.environ.get("RDS_PORT", 5432),
# }
# }
# 배포용

# 데이터베이스 설정
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"HOST": os.environ.get("DB_HOST"),
"NAME": os.environ.get("DB_NAME"),
"USER": os.environ.get("DB_USER"),
"PASSWORD": os.environ.get("DB_PASSWORD"),
"HOST": os.environ.get("RDS_HOSTNAME"),
"NAME": os.environ.get("RDS_DB_NAME"),
"USER": os.environ.get("RDS_USERNAME"),
"PASSWORD": os.environ.get("RDS_PASSWORD"),
"PORT": os.environ.get("RDS_PORT", 5432),
}
}

# 개발용

# # 데이터베이스 설정
# DATABASES = {
# "default": {
# "ENGINE": "django.db.backends.postgresql",
# "HOST": os.environ.get("DB_HOST"),
# "NAME": os.environ.get("DB_NAME"),
# "USER": os.environ.get("DB_USER"),
# "PASSWORD": os.environ.get("DB_PASSWORD"),
# }
# }

# 비밀번호 검증 설정
AUTH_PASSWORD_VALIDATORS = [
{
Expand Down

0 comments on commit 38ee1e1

Please sign in to comment.