Dockerfile을 통해서 가상환경을 세팅하자.
전체적으론 이 링크를 따라하였다.
── README.txt
├── app.py
├── Dockerfile
├── docker-compose.yml
└── requirements.txt
그러면 위와 같은 구조가 나오고 Dockerfile은 아래처럼 나온다.
FROM python:3.7.0-alpine3.8
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
ENV FLASK_APP=app.py
CMD flask run --host=0.0.0.0
문제는 내가 원하는 파일 구조는
├── README.txt
├── application
│ ├── init.py
│ └── app.py
├── docker
│ └── Dockerfile
├── docker-compose.yml
├── main.py
└── requirements.txt
이런식으로 app / docker / env 등으로 구분이 되었으면 하는 점이다.
Dockerfile의 경우 상대경로? 를 제대로 인식 못하기에 docker-compose를 통해서 실행을 시켜주는 걸로 이해를 했고 위와 같은 구조로 바꿔주기 위해서 docker-compose를 수정해야했다.
FROM python:3.7.0-alpine3.8
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
ENV FLASK_APP=main.py
CMD flask run --host=0.0.0.0
version: "3"
services:
app:
build:
context: .
dockerfile: ./docker/Dockerfile
image: flask-new-docker:1.1
environment:
- FLASK_ENV=development
ports:
- 5000:5000
redis:
image: redis:4.0.11-alpine
여기서 바뀐 부분은 build에 context와 dockerfile을 추가 해준 것이다.
context를 통해서 Dockerfile이 어디서 실행되는지 위치를 알려 줄 수 있다.
그렇기에 Dockerfile에 있는 내용 중에
COPY requirements.txt ./
이 부분이 실행될 수 있다.