
v1.0: 초기기능 구현 후 배포 과정(3월 14일~) 중의 내용(학습, 이슈)을 기술 함

pip3 > feeeze requirements.txt
anyio==4.2.0
appnope==0.1.4
argon2-cffi==23.1.0
반드시 라이브러리==버젼 양식이 지켜져야 함.
pypi 양식이라고 하던데 좌우지간 pypi 양식으로 라이브 버젼 양식이 되어있지 않으면
conda list 명령어로 버젼을 확인 후 수
동으로 requirements.txt 안의 내용을 수정해야한다
좋지 않은 예시
asttokens @ file:///opt/conda/conda-bld/asttokens_1646925590279/work
# pull official base image
FROM python:3.10-slim
# Install gcc and python3-dev
RUN apt-get update && apt-get install -y gcc python3-dev
# set work directory
WORKDIR /usr/src/app
# set enviroment variabels
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# 로컬의 현재위치 파일을 /usr/src/app 작업 경로로 복사, 두 경로 사이에 공백 주의
COPY . /usr/src/app/ # **두 경로 사이에 공백 주의**
# install dependencies
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
version: '3' # 파일의 최신 포맷버젼사용
services:
web:
build: . # 현재 폴더를 빌드
command: python3 manage.py runserver 0.0.0.0:8000 # 서버 실행 명령을 대신 입력
volumes: # 도커와 로컬을 연결, '.'는 현재 위치
- ./:/usr/src/app/
ports:
- '8000:8000' # 로컬포트:컨테이너포트
env_file:
- ./.env.dev # 컨테이너 개발환경에서 필요한 환경변수 값 지정.
# settings.py에서 이 값을 불러와 사용
DEBUG = int(os.environ.get("DEBUG", 1))
if os.environ.get("DJANGO_ALLOWED_HOSTS"):
ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS", "").split()
print("environ ALLOWED_HOSTS 확인", ALLOWED_HOSTS)
else:
print("else ALLOWED_HOSTS 확인")
ALLOWED_HOSTS = ["localhost", "127.0.0.1", "[::1]", "0.0.0.0:8000"]
print("최종 ALLOWED_HOSTS 확인", ALLOWED_HOSTS)
if os.environ.get("DJANGO_ALLOWED_HOSTS"):
ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split("")
# splits() 안됨, 인자 값에 공백 기준으로 split 함을 정확히 명시 할 것
else:
ALLOWED_HOSTS = [] # <- 모든 ip다 허용 가능한 상태
DEBUG = 1
SECRET_KEY = 'django-insecure-^*)3u$zud1z2dfngqh7fdb)xp$cueimjz_0r(4q35l-+gwhme-'
DJANGO_ALLOWED_HOSTS = localhost 127.0.0.1 [::1] 0.0.0.0
docker-compose build
docker-compose up
Django 코드를 Docker container로 정상적으로 띄웠지만, local에서 열리지 않음
Docker-copose bilde 명령어가 아닌 docker run --rm -p 9000:8000 test_poko1 단일 컨테이너를 띄웠을 때 성공.
강의에서 도커파일에 CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000”]를 작성
환경변수와, CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
컴퓨터에서의 포트(port)란 외부의 다른 장비와 프르그램이 접속하기 위한 주소.
특정 서버에 접속하려면 URL이나 IP 주소를 입력하는데 인터넷상에서 URL 또는 IP를 토대로 해당 서버가 있는 컴퓨터로 연결한다.
하지만 대부분의 컴퓨터에서는 여러 개의 프로그램이 동시에 실행되고 있고, 이 여러개의 프로그램 중 어느 프로그램이 내가 접속하려는 프로그램인지 컴퓨터에게 알려 주어야한다.
이때 포트 번호는 어떤 프로그램에 접속 할 것인지 컴퓨터에게 알려준다.
[IP address, Port] => IP address는 컴퓨터를 찾을 때 필요한 주소를 나타내며, Port는 컴퓨터 안에서 프로그램을 찾을 때를 나타내는 것.
이 두 개를 이용하여 특정 컴퓨터의 프로그램을 이용 할 수 있게된다.
참고: https://sangbeomkim.tistory.com/101