Dockerieze 첫 발

김장훈·2020년 5월 11일
0

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
  1. ENV에 있는 flask app을 키는 부분의 파일명을 변경
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 ./

이 부분이 실행될 수 있다.

  • context를 안넣어주면 Dockerfile이 경로를 이해 못한다.
profile
읽기 좋은 code란 무엇인가 고민하는 백엔드 개발자 입니다.

0개의 댓글