build: optimize Dockerfile for better layer caching and smaller image size
- Combined apt-get commands into a single RUN layer - Added --no-install-recommends flag to avoid unnecessary packages - Cleaned up apt cache and removed package lists after installation - Reordered COPY commands to copy requirements.txt first for better Docker layer caching - Separated COPY of requirements.txt from the rest of the application code
This commit is contained in:
parent
df78bab6f4
commit
7614131511
1 changed files with 16 additions and 4 deletions
20
Dockerfile
20
Dockerfile
|
|
@ -3,13 +3,25 @@ FROM python:3-bookworm
|
|||
# Set working directory
|
||||
WORKDIR /app
|
||||
|
||||
# Install runtime dependencies (minimal)
|
||||
RUN apt update && apt install cvs rsh-client cvsps
|
||||
# Install runtime dependencies in a single layer and clean up apt cache
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
cvs \
|
||||
rsh-client \
|
||||
cvsps && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY . .
|
||||
# Copy requirements first for better layer caching
|
||||
COPY requirements.txt .
|
||||
|
||||
# Install Python dependencies
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# Copy the rest of the application
|
||||
COPY . .
|
||||
|
||||
# Install the package
|
||||
RUN pip install --no-cache-dir -e .
|
||||
|
||||
# Set environment variables for configuration (with defaults)
|
||||
|
|
@ -26,4 +38,4 @@ ENV CVS_URL="" \
|
|||
EXPOSE 5000
|
||||
|
||||
# Set the entrypoint to run the application with environment variables as command-line arguments
|
||||
ENTRYPOINT ["sh", "-c", "python -m cvs_proxy.app --cvs-url \"$CVS_URL\" --repo-checkouts \"$REPO_CHECKOUTS\" ${CVS_MODULE:+--cvs-module \"$CVS_MODULE\"} ${BASEPATH:+--basepath \"$BASEPATH\"} --host \"$FLASK_HOST\" --port \"$FLASK_PORT\" ${FLASK_DEBUG:+--debug}"]
|
||||
ENTRYPOINT ["sh", "-c", "python -m cvs_proxy.app --cvs-url \"$CVS_URL\" --repo-checkouts \"$REPO_CHECKOUTS\" ${CVS_MODULE:+--cvs-module \"$CVS_MODULE\"} ${BASEPATH:+--basepath \"$BASEPATH\"} --host \"$FLASK_HOST\" --port \"$FLASK_PORT\" ${FLASK_DEBUG:+--debug}"]
|
||||
Loading…
Add table
Add a link
Reference in a new issue