ASTAROTH0405 commited on
Commit
fb4e863
·
verified ·
1 Parent(s): 848a39b

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +33 -91
Dockerfile CHANGED
@@ -1,100 +1,42 @@
1
  # syntax=docker/dockerfile:1.4
2
  FROM agent0ai/agent-zero:latest
3
 
4
- ENV PYTHONUNBUFFERED=1
 
 
 
 
5
 
6
  USER root
7
 
8
- RUN groupadd -g 1000 agent && \
9
- useradd -u 1000 -g 1000 -m -s /bin/bash agent && \
10
- mkdir -p /data /home/agent/.local && \
11
- chown -R agent:agent /data /home/agent
12
-
13
- RUN sed -i 's|sys.executable,|"/data/venv-a0/bin/python",|' \
14
- /git/agent-zero/plugins/_telegram_integration/helpers/dependencies.py
15
-
16
- RUN echo '#!/bin/bash' > /start.sh && \
17
- echo 'set -e' >> /start.sh && \
18
- echo '' >> /start.sh && \
19
- echo 'echo "=== MAPEO TOTAL DE DIRECTORIOS (EXCLUYENDO SISTEMA BASE) ==="' >> /start.sh && \
20
- echo '' >> /start.sh && \
21
- echo 'SYSTEM_DIRS="bin boot dev etc lib lib64 proc root sbin sys usr var run"' >> /start.sh && \
22
- echo '' >> /start.sh && \
23
- echo 'is_system_path() { local p="$1"; for sys in $SYSTEM_DIRS; do [[ "$p" == "/$sys" || "$p" == "/$sys/"* ]] && return 0; done; return 1; }' >> /start.sh && \
24
- echo '' >> /start.sh && \
25
- echo 'move_to_data() {' >> /start.sh && \
26
- echo ' local SRC="$1"' >> /start.sh && \
27
- echo ' local REL="${SRC#/}"' >> /start.sh && \
28
- echo ' local DST="/data/$REL"' >> /start.sh && \
29
- echo ' mkdir -p "$(dirname "$DST")"' >> /start.sh && \
30
- echo ' if [ ! -e "$DST" ]; then' >> /start.sh && \
31
- echo ' echo " ➕ Moviendo $SRC -> $DST (copia inicial)"' >> /start.sh && \
32
- echo ' cp -a "$SRC" "$DST" 2>/dev/null && rm -rf "$SRC"' >> /start.sh && \
33
- echo ' else' >> /start.sh && \
34
- echo ' echo " 🔄 $DST ya existe. Preservando contenido y eliminando original."' >> /start.sh && \
35
- echo ' rm -rf "$SRC"' >> /start.sh && \
36
- echo ' fi' >> /start.sh && \
37
- echo ' ln -sfn "$DST" "$SRC"' >> /start.sh && \
38
- echo ' chown -h agent:agent "$SRC"' >> /start.sh && \
39
- echo '}' >> /start.sh && \
40
- echo '' >> /start.sh && \
41
- echo '# Gestionar repositorio de código' >> /start.sh && \
42
- echo 'REPO_DIR="/data/agent-zero-repo"' >> /start.sh && \
43
- echo 'if [ -d "$REPO_DIR/.git" ]; then' >> /start.sh && \
44
- echo ' echo "🔄 Actualizando repositorio (git pull)..."' >> /start.sh && \
45
- echo ' git -C "$REPO_DIR" pull origin main || { echo "ERROR: git pull falló, eliminando repo corrupto"; rm -rf "$REPO_DIR"; }' >> /start.sh && \
46
- echo 'fi' >> /start.sh && \
47
- echo 'if [ ! -d "$REPO_DIR/.git" ]; then' >> /start.sh && \
48
- echo ' echo "📦 Clonando repositorio oficial..."' >> /start.sh && \
49
- echo ' rm -rf "$REPO_DIR"' >> /start.sh && \
50
- echo ' git clone https://github.com/agent0ai/agent-zero.git "$REPO_DIR"' >> /start.sh && \
51
- echo ' git config --global --add safe.directory "$REPO_DIR"' >> /start.sh && \
52
- echo 'fi' >> /start.sh && \
53
- echo 'chown -R agent:agent "$REPO_DIR"' >> /start.sh && \
54
- echo '' >> /start.sh && \
55
- echo '# Entorno virtual persistente' >> /start.sh && \
56
- echo 'PERSIST_VENV="/data/venv-a0"' >> /start.sh && \
57
- echo 'if [ ! -d "$PERSIST_VENV" ]; then' >> /start.sh && \
58
- echo ' echo "📦 Copiando entorno virtual por primera vez..."' >> /start.sh && \
59
- echo ' cp -a /opt/venv-a0 "$PERSIST_VENV"' >> /start.sh && \
60
- echo 'fi' >> /start.sh && \
61
- echo '' >> /start.sh && \
62
- echo '# Enlaces fijos' >> /start.sh && \
63
- echo 'ln -sfn "$REPO_DIR" /git/agent-zero' >> /start.sh && \
64
- echo 'ln -sfn "$PERSIST_VENV" /opt/venv-a0' >> /start.sh && \
65
- echo 'chown -h agent:agent /git/agent-zero /opt/venv-a0' >> /start.sh && \
66
- echo '' >> /start.sh && \
67
- echo '# Mapeo de todos los elementos en la raíz' >> /start.sh && \
68
- echo 'echo "Procesando elementos en la raíz..."' >> /start.sh && \
69
- echo 'for item in /*; do' >> /start.sh && \
70
- echo ' [ "$item" = "/data" ] && continue' >> /start.sh && \
71
- echo ' is_system_path "$item" && echo " ⏭️ $item (sistema)" && continue' >> /start.sh && \
72
- echo ' [ -L "$item" ] && continue' >> /start.sh && \
73
- echo ' move_to_data "$item"' >> /start.sh && \
74
- echo 'done' >> /start.sh && \
75
- echo '' >> /start.sh && \
76
- echo 'chown -R agent:agent /data' >> /start.sh && \
77
- echo '' >> /start.sh && \
78
- echo 'echo "=== ESPACIO OCUPADO EN /data ==="' >> /start.sh && \
79
- echo 'du -sh /data/ 2>/dev/null || echo "no se puede calcular"' >> /start.sh && \
80
- echo 'echo "================================"' >> /start.sh && \
81
- echo '' >> /start.sh && \
82
- echo 'PYTHON_CMD="/opt/venv-a0/bin/python"' >> /start.sh && \
83
- echo 'if [ ! -x "$PYTHON_CMD" ]; then' >> /start.sh && \
84
- echo ' echo "ERROR: Python no encontrado"; exit 1' >> /start.sh && \
85
- echo 'fi' >> /start.sh && \
86
- echo 'cd /git/agent-zero' >> /start.sh && \
87
- echo 'export HOME=/home/agent USER=agent LOGNAME=agent' >> /start.sh && \
88
- echo 'PORT=${PORT:-7860}' >> /start.sh && \
89
- echo 'exec setpriv --reuid=1000 --regid=1000 --clear-groups \' >> /start.sh && \
90
- echo ' "$PYTHON_CMD" run_ui.py --host 0.0.0.0 --port "$PORT" --dockerized=True' >> /start.sh
91
-
92
  RUN chmod 755 /start.sh
93
 
94
- ENV RFC_PASSWORD="default_password_change_me" \
95
- A0_SET_RFC_URL="localhost" \
96
- A0_SET_RFC_PORT_HTTP=55080 \
97
- PORT=7860
98
-
99
  EXPOSE 7860
100
- CMD ["/start.sh"]
 
 
 
1
  # syntax=docker/dockerfile:1.4
2
  FROM agent0ai/agent-zero:latest
3
 
4
+ ENV PYTHONUNBUFFERED=1 \
5
+ PORT=7860 \
6
+ HOME=/home/agent \
7
+ USER=agent \
8
+ LOGNAME=agent
9
 
10
  USER root
11
 
12
+ # Instalar dependencias críticas del sistema requeridas para herramientas avanzadas
13
+ RUN apt-get update && apt-get install -y \
14
+ tesseract-ocr \
15
+ poppler-utils \
16
+ libmagic1 \
17
+ pandoc \
18
+ setpriv \
19
+ && rm -rf /var/lib/apt/lists/*
20
+
21
+ # Configurar el usuario no privilegiado UID 1000 requerido por la plataforma de Hugging Face
22
+ RUN groupadd -g 1000 agent || true && \
23
+ useradd -u 1000 -g 1000 -m -s /bin/bash agent || true && \
24
+ mkdir -p /data /home/agent/.local /a0/usr && \
25
+ chown -R agent:agent /data /home/agent /a0
26
+
27
+ # Modificar el plugin de Telegram para asegurar que use el venv persistente
28
+ RUN if [ -f /git/agent-zero/plugins/_telegram_integration/helpers/dependencies.py ]; then \
29
+ sed -i 's|sys.executable,|"/data/venv-a0/bin/python",|' \
30
+ /git/agent-zero/plugins/_telegram_integration/helpers/dependencies.py; \
31
+ fi
32
+
33
+ # Incorporar el script de arranque robusto de nivel superior
34
+ COPY --chown=agent:agent start.sh /start.sh
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  RUN chmod 755 /start.sh
36
 
37
+ # Declarar volumen persistente y puerto de escucha
38
+ VOLUME ["/data"]
 
 
 
39
  EXPOSE 7860
40
+
41
+ # Arrancar el contenedor bajo control del script quirúrgico
42
+ ENTRYPOINT ["/start.sh"]