Skip to content

Instantly share code, notes, and snippets.

@matog
Last active January 17, 2024 20:22
Show Gist options
  • Save matog/24820298565d8be48ac798b065d84168 to your computer and use it in GitHub Desktop.
Save matog/24820298565d8be48ac798b065d84168 to your computer and use it in GitHub Desktop.
Dockerfile para Streamlit app

Instalar pipreqs para generar el requirements.txt sólo con los paquetes que importamos en el código:

pip install pipreqs

Ver pipreqs

Probar este Dockerfile:

app/Dockerfile

FROM python:3.7

WORKDIR /app

RUN apt-get update && apt-get install -y \
 build-essential \
 curl \
 software-properties-common \
 git \
 && rm -rf /var/lib/apt/lists/*

RUN git clone https://github.com/streamlit/streamlit-example.git .

COPY requirements.txt ./requirements.txt
RUN pip3 install -r requirements.txt
COPY . .

EXPOSE 8501

HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health

ENTRYPOINT ["streamlit", "run", "main.py", "--server.port=8501", "--server.address=0.0.0.0"]

Para generar la imagen, correr en la caperta donde se encuentra el Dockerfile:

docker build -t afa-nalytics:latest .

Para guardar la imagen en un archivo .tar:

docker save -o nombre.tar nombre-imagen

Para copiar la imagen comprimida al servidor:

scp nombre.tar usuario-remoto@ip-remota:/carpeta/de/destino

En la máquina remota:

docker load -i nombre.tar

y lo ejecutamos mediante docker:

docker run -p 8501:8501 nombre

Alternativamente, el docker compose:

services:
  afa-data:
    image: gmato/afanalytics:latest
    container_name: afanalytics
    volumes:
      - ./config/data:/data
    ports:
      - '8501:8501'
    restart: unless-stopped 

Para Onda:

services:
  onda:
    image: onda:0.1
    container_name: onda
    volumes:
      - ./config/data:/data
      - ./config/processed_files:/processed_files
    ports:
      - '8501:8501'
    restart: unless-stopped 

Para compartir archivos...moficar la ruta, correr la imagen, que tire error, y volver a poner la correcta. Así de random.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment