Update build process to reduce image size

This commit is contained in:
SwiftyOS
2024-09-11 16:10:06 +02:00
parent bba9836735
commit 60fca5c5f0
2 changed files with 34 additions and 15 deletions

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,16 +6,11 @@ ENV PYTHONUNBUFFERED 1
WORKDIR /app
# postgresql-client is needed to check if the postgres service is ready for running migrations
# 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" \
@@ -24,7 +19,33 @@ 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/autogpt_server/poetry.lock rnd/autogpt_server/pyproject.toml /app/rnd/autogpt_server/
WORKDIR /app/rnd/autogpt_server
RUN poetry config virtualenvs.create false \
&& poetry install --no-interaction --no-ansi
# Generate Prisma client
COPY rnd/autogpt_server/schema.prisma ./
RUN 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
# 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
RUN mkdir -p /app/rnd/autogpt_server
@@ -35,8 +56,6 @@ COPY rnd/autogpt_server/poetry.lock rnd/autogpt_server/pyproject.toml /app/rnd/a
WORKDIR /app/rnd/autogpt_server
RUN poetry install --no-interaction --no-ansi
FROM server_dependencies AS server_prisma
COPY rnd/autogpt_server/schema.prisma ./

View File

@@ -51,7 +51,7 @@ services:
rest_server:
image: autogpt_server:latest
command: ["poetry", "run", "rest"]
command: ["python", "-m", "autogpt_server.rest"]
develop:
watch:
- path: ./
@@ -80,7 +80,7 @@ services:
executor:
image: autogpt_server:latest
command: ["poetry", "run", "executor"]
command: ["python", "-m", "autogpt_server.exec"]
develop:
watch:
- path: ./
@@ -108,7 +108,7 @@ services:
websocket_server:
image: autogpt_server:latest
command: ["poetry", "run", "ws"]
command: ["python", "-m", "autogpt_server.ws"]
develop:
watch:
- path: ./