🎃
FastAPI + Postgresの環境構築 (DockerCompose使用)
docker-composeを使ってfastapi + postgresの環境構築をする際に少しハマったので、メモ
依存パッケージを先にインストール
psycopg2をインストールする際に、
Error: pg_config executable not found.
というエラーが出た。
これはpsycopg2に必要なパッケージが入っていないからだった。
というわけで依存パッケージをインストール
RUN python3 -m pip install -r /app/requirements.txt --no-cache-dir
↓
RUN apk add --no-cache postgresql-libs \
&& apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev \
&& python3 -m pip install -r /app/requirements.txt --no-cache-dir \
&& apk --purge del .build-deps
Dockerfile
FROM python:3.9-alpine
ENV LANG C.UTF-8
ENV TZ Asia/Tokyo
WORKDIR /app
# pip installs
COPY ./requirements.txt requirements.txt
RUN apk add --no-cache postgresql-libs \
&& apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev \
&& python3 -m pip install -r /app/requirements.txt --no-cache-dir \
&& apk --purge del .build-deps
COPY . /app
# FastAPIの起動
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
docker-compose.yml
version: '3.4'
services:
server:
build:
context: ./app
dockerfile: Dockerfile
volumes:
- ./app/:/app/
- /var/run/docker.sock:/var/run/docker.sock
command: uvicorn main:app --reload --workers 1 --host 0.0.0.0 --port 8000
env_file:
- ./app/.env
ports:
- 8000:8000
depends_on:
- db
db:
image: postgres:13.1-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- ./app/.env
ports:
- 5432:5432
volumes:
postgres_data:
requirement.txt
fastapi
uvicorn
databases[postgresql]==0.4.1
SQLAlchemy==1.3.22
alembic==1.5.2
psycopg2==2.8.6
Discussion