-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile
46 lines (37 loc) · 1.21 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# syntax=docker/dockerfile:1.4
FROM python:3.10.4-slim-bullseye
LABEL org.opencontainers.image.title="GreatAI package wrapper image"
LABEL org.opencontainers.image.vendor="ScoutinScience B.V."
LABEL org.opencontainers.image.authors="[email protected]"
LABEL org.opencontainers.image.source="https://github.com/schmelczer/great-ai"
SHELL ["/bin/bash", "-c"]
ENV ENVIRONMENT=production
# curl is needed for the healthcheck
# build-essentials are needed for building packages
RUN DEBIAN_FRONTEND=noninteractive apt update &&\
apt install curl build-essential -y &&\
rm -rf /var/lib/apt/lists/*
WORKDIR /dependencies
COPY . great_ai
RUN python3 -m pip --no-cache-dir install --upgrade pip &&\
pip install --no-cache-dir ./great_ai &&\
rm -rf great_ai
HEALTHCHECK \
--interval=30s \
--timeout=180s \
--start-period=60s \
--retries=5 \
CMD [ "curl", "--fail", "http://localhost:6060/health" ]
WORKDIR /app
COPY <<EOF hello_world.py
from great_ai import GreatAI
\
@GreatAI.create
def hello_world(name: str) -> str:
"""Learn more about GreatAI at https://great-ai.scoutinscience.com"""
return f"Hello {name}!"
EOF
EXPOSE 6060
VOLUME /app
ENTRYPOINT ["/usr/local/bin/python3", "-m", "great_ai"]
CMD ["hello_world.py"]