Kgshop commited on
Commit
0633334
·
verified ·
1 Parent(s): 129f289

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +32 -12
Dockerfile CHANGED
@@ -1,19 +1,39 @@
1
- # Базовый образ Python
2
- FROM python:3.9-slim
3
 
4
- # Установка зависимостей
5
- COPY requirements.txt requirements.txt
6
- RUN pip install -r requirements.txt
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
- # Создание рабочей директории и настройка прав доступа
9
  WORKDIR /app
10
 
11
- # Убедитесь, что контейнер имеет права на запись в текущую директорию
12
- RUN chmod -R 777 /app
 
 
13
 
14
- # Копируем приложение
15
- COPY app.py /app/app.py
 
 
 
16
 
17
- # Запускаем приложение
18
  EXPOSE 7860
19
- CMD ["python", "/app/app.py"]
 
 
 
1
+ # ====================== Builder Stage ======================
2
+ FROM rust:1.85-slim AS builder
3
 
4
+ WORKDIR /app
5
+
6
+ # Сначала копируем только Cargo файлы для кэширования зависимостей
7
+ COPY Cargo.toml Cargo.lock ./
8
+
9
+ # Создаём пустой main.rs чтобы закешировать зависимости
10
+ RUN mkdir src && echo "fn main() { println!(\"dummy\"); }" > src/main.rs
11
+ RUN cargo build --release
12
+ RUN rm -rf src
13
+
14
+ # Теперь копируем весь исходный код
15
+ COPY . .
16
+
17
+ # Собираем реальное приложение
18
+ RUN cargo build --release
19
+
20
+ # ====================== Runtime Stage ======================
21
+ FROM debian:bookworm-slim AS runtime
22
 
 
23
  WORKDIR /app
24
 
25
+ # Устанавливаем только необходимые пакеты
26
+ RUN apt-get update && apt-get install -y --no-install-recommends \
27
+ ca-certificates \
28
+ && rm -rf /var/lib/apt/lists/*
29
 
30
+ # Копируем скомпилированный бинарник из builder
31
+ COPY --from=builder /app/target/release/app /usr/local/bin/app
32
+
33
+ # Права (аналогично твоему chmod 777)
34
+ RUN chmod +x /usr/local/bin/app
35
 
 
36
  EXPOSE 7860
37
+
38
+ # Запуск
39
+ CMD ["app"]