lucianotonet commited on
Commit
4a145ef
·
1 Parent(s): 0ccd798

Refactor Dockerfile and entrypoint script for Botpress: simplify file copying, enhance directory creation logic, and ensure proper execution as a non-root user.

Browse files
Files changed (2) hide show
  1. Dockerfile +5 -17
  2. entrypoint.sh +3 -2
Dockerfile CHANGED
@@ -18,26 +18,14 @@ ENV PORT=7860 \
18
  # A imagem do Botpress geralmente usa /botpress como diretório base
19
  WORKDIR /botpress
20
 
21
- # Copie o script de entrypoint e torne-o executável (como root)
22
- COPY entrypoint.sh /botpress/entrypoint.sh
23
- RUN chmod +x /botpress/entrypoint.sh
24
-
25
- # Garanta que o diretório /botpress/data seja criado com permissões corretas
26
- # Isso deve ser feito como root antes de copiar arquivos e mudar para usuário não-root
27
- RUN mkdir -p /botpress/data/storage && \
28
- chown -R 1000:1000 /botpress/data 2>/dev/null || true
29
-
30
- # Copie os arquivos necessários para o contêiner
31
- # O Hugging Face Spaces executa como UID 1000, então usamos isso diretamente
32
- COPY --chown=1000:1000 . /botpress
33
-
34
- # Mude para o usuário não-root usando UID diretamente
35
- # O Hugging Face Spaces requer que o container rode como UID 1000
36
- USER 1000
37
 
38
  # Exponha a porta 7860 (padrão do Hugging Face Spaces)
39
  EXPOSE 7860
40
 
41
  # Use o script de entrypoint que configura permissões antes de iniciar
42
- ENTRYPOINT ["/botpress/entrypoint.sh"]
 
43
  CMD []
 
18
  # A imagem do Botpress geralmente usa /botpress como diretório base
19
  WORKDIR /botpress
20
 
21
+ # Copie todos os arquivos (incluindo entrypoint.sh)
22
+ # A imagem do Botpress já roda como usuário não-root, então não precisamos --chown
23
+ COPY . /botpress
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
  # Exponha a porta 7860 (padrão do Hugging Face Spaces)
26
  EXPOSE 7860
27
 
28
  # Use o script de entrypoint que configura permissões antes de iniciar
29
+ # O entrypoint criará os diretórios necessários em runtime
30
+ ENTRYPOINT ["sh", "/botpress/entrypoint.sh"]
31
  CMD []
entrypoint.sh CHANGED
@@ -1,9 +1,8 @@
1
  #!/bin/sh
2
- set -e
3
 
4
  # Criar diretórios necessários com permissões corretas
5
  # O diretório /data é criado pelo Hugging Face Spaces, mas precisamos criar os subdiretórios
6
- if [ -w /data ]; then
7
  mkdir -p /data/botpress/data/storage 2>/dev/null || true
8
  mkdir -p /data/botpress/modules 2>/dev/null || true
9
  mkdir -p /data/botpress/config 2>/dev/null || true
@@ -12,6 +11,7 @@ fi
12
 
13
  # Criar diretórios no /botpress também (caso o Botpress precise)
14
  # Este é o diretório que o Botpress tenta usar por padrão
 
15
  mkdir -p /botpress/data/storage 2>/dev/null || true
16
  mkdir -p /botpress/data 2>/dev/null || true
17
 
@@ -20,5 +20,6 @@ mkdir -p /botpress/data 2>/dev/null || true
20
  chmod -R 755 /botpress/data 2>/dev/null || true
21
 
22
  # Executar o Botpress
 
23
  exec ./bp "$@"
24
 
 
1
  #!/bin/sh
 
2
 
3
  # Criar diretórios necessários com permissões corretas
4
  # O diretório /data é criado pelo Hugging Face Spaces, mas precisamos criar os subdiretórios
5
+ if [ -w /data ] 2>/dev/null; then
6
  mkdir -p /data/botpress/data/storage 2>/dev/null || true
7
  mkdir -p /data/botpress/modules 2>/dev/null || true
8
  mkdir -p /data/botpress/config 2>/dev/null || true
 
11
 
12
  # Criar diretórios no /botpress também (caso o Botpress precise)
13
  # Este é o diretório que o Botpress tenta usar por padrão
14
+ # Tentar criar, mas não falhar se não tiver permissão
15
  mkdir -p /botpress/data/storage 2>/dev/null || true
16
  mkdir -p /botpress/data 2>/dev/null || true
17
 
 
20
  chmod -R 755 /botpress/data 2>/dev/null || true
21
 
22
  # Executar o Botpress
23
+ # Usar exec para substituir o processo atual
24
  exec ./bp "$@"
25