-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
85 lines (68 loc) · 2.28 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
FROM python:3.11-rc-bullseye AS builder
# TRICK TO USE DIFFERENT PYTHON VERSIONS
#ARG PYTHON_VERSION=3.7.0-alpine3.8
#FROM python:${PYTHON_VERSION} as builder
# TRY ALPINE LINUX PYTHON FOR SMALLER IMAGE
#FROM python:3.11-rc-alpine3.16 AS builder
## ARGS ##
ARG REQS=base
ARG VENV=/usr/local/gval_env
ARG PROJDIR=/gval
ARG VERSION=''
ARG MAINTANER='Fernando Aristizabal'
ARG RELEASE_DATE=''
## SETUP ENV VARS ##
ARG VENV=$VENV
ARG PROJDIR=$PROJDIR
## COPY IN REQUIREMENTS ##
COPY requirements/$REQS.txt /tmp
## INSTALL EXTERNAL DEPENDENCIES ##
# remove versions if errors occur
RUN apt update --fix-missing && \
DEBIAN_FRONTEND=noninteractive \
apt install -qy \
gdal-bin=3.2.2+dfsg-2+deb11u2 \
libgdal-dev=3.2.2+dfsg-2+deb11u2 \
python3-gdal=3.2.2+dfsg-2+deb11u2 && \
apt auto-remove -y && \
python3 -m venv $VENV && \
rm -rf /var/cache/apt/* /var/lib/apt/lists/* && \
$VENV/bin/pip install -r /tmp/$REQS.txt && \
rm -rf /tmp/*
# TRY USING $VENV/bin/pip???
#RUN $VENV/bin/pip install -r /tmp/$REQS.txt && \
# rm -rf /tmp/*
###############################################################################################
# development stage
###############################################################################################
FROM python:3.11-rc-bullseye AS development
## SETTING ENV VARIABLES ##
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
# ensures stdout stderr are sent straight to terminal
ENV PYTHONUNBUFFERED=TRUE
## Virtual and project directories ##
#ARG VENV=$VENV
#ARG PROJDIR=$PROJDIR
# Label docker image
LABEL version=$VERSION \
maintaner=$MAINTANER \
release-date=$RELEASE_DATE
# RETRIEVE BUILT DEPENDENCIES
COPY --from=builder $VENV $VENV
# set path to virtual env so that future python commands use is it
ENV PATH="$VENV:$PATH"
## ADDING USER GROUP ##
ARG UID=1001
ARG UNAME=user
RUN useradd -Ums /bin/bash -u $UID $UNAME
USER $UNAME
WORKDIR /home/$UNAME
###############################################################################################
# runtime stage
###############################################################################################
#FROM development AS runtime
#COPY . $PROJDIR
#WORKDIR $PROJDIR
#RUN $VENV/bin/pip install $PROJDIR
#CMD ["./.venv/bin/python", "-m", "$PROJDIR/main.py"]