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.