Python Dockerfile for Flask

FROM python:3.11-slim as build

EXPOSE 5000/tcp

WORKDIR /app

## build python environment from requirements.txt
COPY requirements.txt .
RUN pip install -r requirements.txt

## copy everything except the database directory (will be mapped) \
## note that for this implementation, the app needs to initialize its database
copy . .
RUN rm -Rf app/database

## launch the flask app
ENTRYPOINT FLASK_APP=/app/app.py flask run --host=0.0.0.0 --port=5000

Pycharm Example

Run

Not ideal because it resets whenever you start the container. Need a better way:

sudo docker run -it -p 8888:8888 jupyter/pyspark-notebook jupyter notebook --no-browser --allow-root --ip=0.0.0.0

Then access it from a browser:

http://docker1.bpopp.net:8888

You'll need the token from the docker terminal the first time accessing the notebook.

Get Shell to Container

Get a list of running containers and find the id for your specific container:

[bpopp@p1 pubs]$ sudo docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                    NAMES
e0fd0ef0e5c0        jupyter/all-spark-notebook   "tini -g -- jupyter …"   22 hours ago        Up 22 hours         0.0.0.0:8888->8888/tcp   kind_sanderson

Launch a shell

sudo docker exec -it e0fd0ef0e5c0 /bin/bash

Or as root

sudo docker exec -u root -it e0fd0ef0e5c0 /bin/bash

To install something

 pip install plotnine --proxy http://myproxy.somewhere.com:3128