Построение изображения разработки с Nodejs и производством без Nodejs (с только предварительно скомпилированными файламиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Построение изображения разработки с Nodejs и производством без Nodejs (с только предварительно скомпилированными файлами

Сообщение Anonymous »

У меня есть приложение Django, которое использует Tailwindcss для стиля (используя пакет Django-TailWind). Я разрабатываю локально с Docker Compose и планирую развертывание с использованием того же. Приложение (это требует nodejs)
для производства: я составляю файлы CSS во время сборки и не нуждаются в накладных расходах Nodejs. Могу ли я сделать оба из них в одном Dockerfile. Это текущий DockerFile, который у меня есть < /p>
ARG BUILD_TYPE=production

FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS base-builder

# Set environment variables to optimize Python
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

# Set environment variables to optimize UV
ENV UV_COMPILE_BYTECODE=1
ENV UV_SYSTEM_PYTHON=1

WORKDIR /app

# Install the requirements
COPY uv.lock .
COPY pyproject.toml .

# Update the package list and install Node.js
RUN apt-get update && \
apt-get install -y nodejs npm && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

FROM base-builder AS production-builder
RUN echo "Running the Production build image!"
ENV UV_NO_DEV=1

FROM base-builder AS development-builder
RUN echo "Running the Development build image!"
ENV UV_NO_DEV=0

FROM ${BUILD_TYPE}-builder AS builder
# Install dependencies
RUN uv sync --locked

# Copy the codebase
COPY ./src .

# Build the theme
RUN cd theme/static_src && \
npm install && \
npm run build && \
rm -rf node_modules

FROM python:3.13-slim-bookworm

WORKDIR /app

RUN apt-get update && apt-get upgrade -y && apt-get clean

COPY --from=builder /app/.venv/lib/python3.13/site-packages/ /usr/local/lib/python3.13/site-packages/
COPY --from=builder /usr/local/bin/ /usr/local/bin/

COPY --from=builder /app/ /app/

COPY ./docker/entrypoint.sh .
RUN chmod +x entrypoint.sh

ENTRYPOINT [ "./entrypoint.sh" ]
< /code>
Скрипт entrypoint < /p>
#!/bin/sh
# Apply database migrations
echo "Applying database migrations..."
python manage.py migrate

# Collect static files
echo "Collecting static files..."
python manage.py collectstatic --noinput

# Create the superuser
echo "Creating superuser..."
python manage.py createsuperuser --noinput

# Start the application
echo "Starting application..."
exec "$@"


Подробнее здесь: https://stackoverflow.com/questions/797 ... -with-only
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»