-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile
91 lines (67 loc) · 3.13 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# 배포용
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 ./potato_project /app
WORKDIR /app
EXPOSE 8000
ARG DEV=false
# 가상 환경 설정 및 패키지 설치
RUN python -m venv /py
RUN /py/bin/pip install --upgrade pip
RUN /py/bin/pip install --no-cache-dir -r /tmp/requirements.txt
# 시스템 패키지 설치
RUN apk add --update --no-cache jpeg-dev
RUN apk add --update --no-cache --virtual .tmp-build-deps \
build-base musl-dev zlib zlib-dev linux-headers \
&& apk del .tmp-build-deps
# django-user 생성 및 권한 설정
RUN if ! getent passwd django-user; then adduser -D django-user; fi
USER root
RUN chown -R django-user:django-user /py/lib/python3.11/site-packages
USER django-user
# 추가 패키지 설치
ENV PATH="/py/bin:$PATH"
RUN /py/bin/pip install --no-cache-dir pytest pytest-django django-cors-headers
# 개발용
# 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