Skip to content

Commit f250736

Browse files
author
Craig
committed
inital working image, python 3.8
1 parent 37cc611 commit f250736

File tree

7 files changed

+101
-1
lines changed

7 files changed

+101
-1
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.idea
2+
.DS_Store

Dockerfile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,20 @@
1+
FROM python:3.8-slim
12

3+
RUN pip install pip waitress --upgrade
4+
5+
COPY ./scripts/entrypoint.sh /entrypoint.sh
6+
RUN chmod +x /entrypoint.sh
7+
8+
COPY ./scripts/run.sh /run.sh
9+
RUN chmod +x /run.sh
10+
11+
COPY ./app /app
12+
WORKDIR /app/
13+
14+
ENV PYTHONPATH=/app
15+
16+
EXPOSE 80
17+
18+
ENTRYPOINT ["/entrypoint.sh"]
19+
20+
CMD ["/run.sh"]

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
# docker-python-waitress
1+
# Docker Python Waitress
2+
3+
Docker container to run a WSGI Python app using Waitress.

app/bootstrap.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
3+
echo "Prestart script"

app/main.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import sys
2+
3+
4+
def app(env, start_response):
5+
version = f"{sys.version_info.major}.{sys.version_info.minor}"
6+
start_response("200 OK", [("Content-Type", "text/plain")])
7+
message = f"Waitress serving up Python {version} in a Docker container"
8+
return [message.encode("utf-8")]

scripts/entrypoint.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
if [ -f /app/app/main.py ]; then
6+
DEFAULT_MODULE_NAME=app.main
7+
elif [ -f /app/main.py ]; then
8+
DEFAULT_MODULE_NAME=main
9+
fi
10+
MODULE_NAME=${MODULE_NAME:-$DEFAULT_MODULE_NAME}
11+
VARIABLE_NAME=${VARIABLE_NAME:-app}
12+
export APP_MODULE=${APP_MODULE:-"$MODULE_NAME:$VARIABLE_NAME"}
13+
14+
exec "$@"

scripts/run.sh

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
# If there's a prestart.sh script in the /app directory, run it before starting
6+
PRE_START_PATH=/app/prestart.sh
7+
echo "Checking for script in $PRE_START_PATH"
8+
if [ -f $PRE_START_PATH ] ; then
9+
echo "Running script $PRE_START_PATH"
10+
. "$PRE_START_PATH"
11+
else
12+
echo "There is no script $PRE_START_PATH"
13+
fi
14+
15+
params="--listen=*:80"
16+
17+
if [[ -v WAITRESS_THREADS ]]; then
18+
params=" $params --thread=$WAITRESS_THREADS"
19+
fi
20+
if [[ -v WAITRESS_IDENT ]]; then
21+
params=" $params --ident=$WAITRESS_IDENT"
22+
fi
23+
if [[ -v WAITRESS_OUTBUF_OVERFLOW ]]; then
24+
params=" $params --outbuf_overflow=$WAITRESS_OUTBUF_OVERFLOW"
25+
fi
26+
if [[ -v WAITRESS_OUTBUF_HIGH_WATERMARK ]]; then
27+
params=" $params --outbuf_high_watermark=$WAITRESS_OUTBUF_HIGH_WATERMARK"
28+
fi
29+
if [[ -v WAITRESS_INBUF_OVERFLOW ]]; then
30+
params=" $params --inbuf_overflow=$WAITRESS_INBUF_OVERFLOW"
31+
fi
32+
if [[ -v WAITRESS_CONNECTION_LIMIT ]]; then
33+
params=" $params --connection_limit=$WAITRESS_CONNECTION_LIMIT"
34+
fi
35+
if [[ -v WAITRESS_MAX_REQUEST_HEADER_SIZE ]]; then
36+
params=" $params --max_request_header_size=$WAITRESS_MAX_REQUEST_HEADER_SIZE"
37+
fi
38+
if [[ -v WAITRESS_MAX_REQUEST_BODY_SIZE ]]; then
39+
params=" $params --max_request_body_size=$WAITRESS_MAX_REQUEST_BODY_SIZE"
40+
fi
41+
if [[ -v WAITRESS_EXPOSE_TRACEBACKS ]]; then
42+
params=" $params --expose_tracebacks=$WAITRESS_EXPOSE_TRACEBACKS"
43+
fi
44+
if [[ -v WAITRESS_ASYNCORE_LOOP_TIMEOUT ]]; then
45+
params=" $params --asyncore_loop_timeout=$WAITRESS_ASYNCORE_LOOP_TIMEOUT"
46+
fi
47+
if [[ -v WAITRESS_ASYNCORE_USE_POLL ]]; then
48+
params=" $params --asyncore_use_poll=$WAITRESS_ASYNCORE_USE_POLL"
49+
fi
50+
51+
# Start Waitress
52+
exec waitress-serve $params $APP_MODULE

0 commit comments

Comments
 (0)