Reduced built image size

This commit is contained in:
SwiftyOS
2024-09-11 16:27:57 +02:00
parent 60fca5c5f0
commit c738eb3bc6
3 changed files with 33 additions and 32 deletions

View File

@@ -28,7 +28,7 @@ RUN poetry config virtualenvs.create false \
# Generate Prisma client
COPY rnd/autogpt_server/schema.prisma ./
RUN poetry run prisma generate
RUN poetry config virtualenvs.create false && poetry run prisma generate
FROM python:3.11-slim-buster AS server_dependencies
@@ -39,12 +39,6 @@ COPY --from=builder /app /app
COPY --from=builder /usr/local/lib/python3.11 /usr/local/lib/python3.11
COPY --from=builder /usr/local/bin /usr/local/bin
# Install runtime dependencies
RUN apt-get update \
&& apt-get install -y postgresql-client ffmpeg \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
ENV PATH="/app/.venv/bin:$PATH"
RUN mkdir -p /app/rnd/autogpt_libs
@@ -59,7 +53,7 @@ WORKDIR /app/rnd/autogpt_server
FROM server_dependencies AS server_prisma
COPY rnd/autogpt_server/schema.prisma ./
RUN poetry run prisma generate
RUN poetry config virtualenvs.create false && poetry run prisma generate
FROM server_prisma AS server

View File

@@ -25,7 +25,7 @@ services:
migrate:
image: autogpt_server:latest
command: ["sh", "-c", "until pg_isready -h postgres -U agpt_user -d agpt_local; do echo 'Waiting for postgres...'; sleep 2; done; poetry run prisma migrate deploy"]
command: ["sh", "-c", "sleep 5 && poetry run prisma migrate deploy"]
depends_on:
postgres:
condition: service_healthy
@@ -140,7 +140,7 @@ services:
environment:
- DATABASE_URL=postgresql://agpt_user:pass123@postgres:5432/agpt_local
ports:
- "8015:8015"
- "8015:8000"
networks:
- app-network

View File

@@ -1,4 +1,4 @@
FROM python:3.11-slim-buster AS server_base
FROM python:3.11-slim-buster AS builder
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
@@ -6,18 +6,11 @@ ENV PYTHONUNBUFFERED 1
WORKDIR /app
# postgresql-client is needed to check if the postgres service is ready for running migrations
# We need to check if the rest of the packages need to be installed
# Install build dependencies
RUN apt-get update \
&& apt-get install -y build-essential curl ffmpeg wget libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev postgresql-client \
&& apt-get install -y build-essential curl ffmpeg wget libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev postgresql-client git \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& wget https://github.com/git/git/archive/v2.28.0.tar.gz -O git.tar.gz \
&& tar -zxf git.tar.gz \
&& cd git-* \
&& make prefix=/usr all \
&& make prefix=/usr install
&& rm -rf /var/lib/apt/lists/*
ENV POETRY_VERSION=1.8.3 \
POETRY_HOME="/opt/poetry" \
@@ -26,31 +19,45 @@ ENV POETRY_VERSION=1.8.3 \
PATH="$POETRY_HOME/bin:$PATH"
RUN pip3 install poetry
FROM server_base AS server_dependencies
# Copy and install dependencies
COPY rnd/autogpt_libs /app/rnd/autogpt_libs
COPY rnd/market/poetry.lock rnd/market/pyproject.toml /app/rnd/market/
WORKDIR /app/rnd/market
RUN poetry config virtualenvs.create false \
&& poetry install --no-interaction --no-ansi
# Generate Prisma client
COPY rnd/market /app/rnd/market
RUN poetry config virtualenvs.create false && poetry run prisma generate
FROM python:3.11-slim-buster AS server_dependencies
WORKDIR /app
# Copy only necessary files from builder
COPY --from=builder /app /app
COPY --from=builder /usr/local/lib/python3.11 /usr/local/lib/python3.11
COPY --from=builder /usr/local/bin /usr/local/bin
ENV PATH="/app/.venv/bin:$PATH"
RUN mkdir -p /app/autogpt
RUN mkdir -p /app/forge
RUN mkdir -p /app/rnd/autogpt_libs
RUN mkdir -p /app/rnd/market
COPY rnd/autogpt_libs /app/rnd/autogpt_libs
COPY rnd/market/poetry.lock rnd/market/pyproject.toml /app/rnd/market/
WORKDIR /app/rnd/market
RUN poetry install --no-interaction --no-ansi
FROM server_dependencies AS server_prisma
# Need the market/utils/partial_types.py
COPY rnd/market /app/rnd/market
COPY rnd/market/schema.prisma ./
RUN poetry run prisma generate
RUN poetry config virtualenvs.create false && poetry run prisma generate
FROM server_prisma AS server
ENV PORT=8005
ENV DATABASE_URL=""
ENV PORT=8000
CMD ["poetry", "run", "app"]
CMD ["uvicorn", "market.app:app"]