FROM python:3.9-slim-buster
COPY . /app . . # 소스는 현재 디렉토리
WORKDIR /app
ENV FLASK_APP
RUN python3 -m venv venv && . venv/bin/activate
RUN pip3 install -r requirements.txtx
EXPOSE 5000
ENTRYPOINT ["python3", "-m", "flask","run" ]
CMD ["--host=0.0.0.0"]
docker build -t myFlask .
docker run -d -p 80:5000 myFlask
Q. 컨테이너에서도 가상환경을 하는 이유가 있을까요?
선택적인 형태, 중요한건 가상환경 유무가 아니라 패키지 설치할때 파이썬은 글로벌과 가상환경 글로벌에 설치했을 때 원래 특정 패키지가 있었다면 내가 사용하는 패키지와 안맞거나 똑같은 패키지가 버전이 다르면 문제가 생길 수 있음 안전하게 하기 위해 가상환경을 사용
vi .dockerignore
venv/
Dockerfile
.dockerignore
copy나 add할 때 제외할 파일을 지정할 수 있음
정규화 표현식 지원
!는 not의 의미
리눅스에서 &&와 ||
- a && b
a가 실행되어야 b를 실행- a || b
a가 실행되지 않으면 b를 실행
vi Dockerfile
FROM python:3.9-buster
COPY . /app
WORKDIR /app
RUN python3 -m venv venv && . venv/bin/activate
RUN pip3 install -r requirements.txt
WORKDIR /app/mysite
CMD ["python3", "manage.py", "runserver","0.0.0.0:8000"]
EXPOSE 8000
docker build -t mydjango .
docker run -d -p 80:8000 mydjango