Skip to content

Commit

Permalink
modify docker file for dev env
Browse files Browse the repository at this point in the history
  • Loading branch information
yu23ki14 authored and sushichan044 committed Aug 5, 2024
1 parent 50fbe1c commit 63bb008
Show file tree
Hide file tree
Showing 3 changed files with 113 additions and 10 deletions.
52 changes: 52 additions & 0 deletions api/Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
ARG PYTHON_VERSION_CODE=3.10
ARG ENVIRONMENT="dev"
# ENVIRONMENT: dev or prod, refer to project.optional-dependencies in pyproject.toml

FROM python:${PYTHON_VERSION_CODE}-bookworm as builder
ARG PYTHON_VERSION_CODE
ARG ENVIRONMENT

WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1

COPY api/pyproject.toml api/README.md ./
COPY api/birdxplorer_api/__init__.py ./birdxplorer_api/

RUN if [ "${ENVIRONMENT}" = "prod" ]; then \
apt-get update && apt-get install -y --no-install-recommends \
postgresql-client-15 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*; \
fi

RUN python -m pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -e ".[${ENVIRONMENT}]"

COPY ../common ./common
RUN if [ "${ENVIRONMENT}" = "dev" ]; then \
pip install -e ./common; \
fi

FROM python:${PYTHON_VERSION_CODE}-slim-bookworm as runner
ARG PYTHON_VERSION_CODE
ARG ENVIRONMENT

WORKDIR /app

RUN if [ "${ENVIRONMENT}" = "prod" ]; then \
apt-get update && apt-get install -y --no-install-recommends \
libpq5 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*; \
fi

RUN groupadd -r app && useradd -r -g app app
RUN chown -R app:app /app
USER app

COPY --from=builder /usr/local/lib/python${PYTHON_VERSION_CODE}/site-packages /usr/local/lib/python${PYTHON_VERSION_CODE}/site-packages
COPY --chown=app:app api ./
COPY ../common ./common

ENTRYPOINT ["python", "-m", "uvicorn", "birdxplorer_api.main:app", "--host", "0.0.0.0"]
19 changes: 9 additions & 10 deletions compose.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version: '3.1'
version: "3.1"

services:
db:
Expand All @@ -14,7 +14,7 @@ services:
timeout: 5s
retries: 5
ports:
- '5432:5432'
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
app:
Expand All @@ -24,31 +24,30 @@ services:
build:
args:
- ENVIRONMENT=dev
context: ./api
dockerfile: Dockerfile
context: ./
dockerfile: ./api/Dockerfile.dev
env_file:
- .env
ports:
- '8000:8000'
- "8000:8000"
develop:
watch:
- action: rebuild
path: ./api
target: /app/api
path: ./
target: /app
migrate:
depends_on:
db:
condition: service_healthy
build:
args:
- ENVIRONMENT=dev
context: ./migrate
dockerfile: Dockerfile
context: ./
dockerfile: ./migrate/Dockerfile.dev
environment:
- WAIT_HOSTS=db:5432
env_file:
- .env


volumes:
postgres_data:
52 changes: 52 additions & 0 deletions migrate/Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
ARG PYTHON_VERSION_CODE=3.10
ARG ENVIRONMENT="dev"
# ENVIRONMENT: dev or prod, refer to project.optional-dependencies in pyproject.toml

FROM python:${PYTHON_VERSION_CODE}-bookworm as builder
ARG PYTHON_VERSION_CODE
ARG ENVIRONMENT

WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1

COPY migrate/pyproject.toml migrate/README.md ./
COPY migrate/birdxplorer_migration/__init__.py ./birdxplorer_migration/

RUN if [ "${ENVIRONMENT}" = "prod" ]; then \
apt-get update && apt-get install -y --no-install-recommends \
postgresql-client-15 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*; \
fi

RUN python -m pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -e ".[${ENVIRONMENT}]"

COPY ../common ./common
RUN if [ "${ENVIRONMENT}" = "dev" ]; then \
pip install -e ./common; \
fi

FROM python:${PYTHON_VERSION_CODE}-slim-bookworm as runner
ARG PYTHON_VERSION_CODE
ARG ENVIRONMENT

WORKDIR /app

RUN if [ "${ENVIRONMENT}" = "prod" ]; then \
apt-get update && apt-get install -y --no-install-recommends \
libpq5 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*; \
fi

RUN groupadd -r app && useradd -r -g app app
RUN chown -R app:app /app
USER app

COPY --from=builder /usr/local/lib/python${PYTHON_VERSION_CODE}/site-packages /usr/local/lib/python${PYTHON_VERSION_CODE}/site-packages
COPY --chown=app:app migrate ./
COPY ../common ./common

ENTRYPOINT ["python", "birdxplorer_migration/scripts/migrate_all.py", "birdxplorer_migration/data/appv1/"]

0 comments on commit 63bb008

Please sign in to comment.