Docker) Docker compose

나 안해·2023년 3월 10일
0

Docker

목록 보기
3/4
post-thumbnail

1. 기본 경로

.
├── app
│   ├── __init__.py
│   └── main.py
├── Dockerfile
├── docker-compose.yml
└── requirements.txt

2. 파일별 기본 코드

2.1 requirements.txt

프로젝트에서 사용하는 라이브러리를 정리하면 된다

2.2 app/init.py

빈 파일

2.3 app/main.py

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

2.4 Dockerfile

FROM python:3.10

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt
 
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
 
COPY ./app /code/app
 
CMD ["uvicorn", "app.main:app", "--host", "ip(보통은 0.0.0.0", "--port", "포트번호(보통8000이나 8080"]

2.5 docker-compose.yml

version: "사용할 버전"

services:
  fastapi:
    image: fastapi
    command: uvicorn app.main:app --host ip --port 포트번호 --reload
    ports:
      - 8080:8080
    volumes:
      - ./app:/code/app
  • volumns는 app 폴더를 수정하면 code/app에도 반영될 수 있도록 ./app:/code/app으로 설정해준다

3. 사용

3.1 build

docker build -t fastapi .

3.2 컨테이너 올리기

docker compose up


에러

Unable to locate package vim

apt-get update && apt-get install apt-file -y && apt-file update && apt-get install vim -y

파이참에서 DB 불러오기가 실패하는 경우

원인
권한 문제

해결
DB의 컨테이너로 들어가서 grant all privileges on *.* to 'root'@'%' identified by 'root'; 입력

0개의 댓글