@@ -4,6 +4,8 @@ FROM python:3.12.4-alpine3.20 AS base
4
4
ENV WORKDIR=/app
5
5
WORKDIR ${WORKDIR}
6
6
7
+ RUN apk add --update --no-cache make
8
+
7
9
# ##############################################################################
8
10
FROM base AS lint
9
11
@@ -35,34 +37,51 @@ COPY ./requirements.txt ${WORKDIR}/
35
37
COPY ./setup.cfg ${WORKDIR}/
36
38
COPY ./Makefile ${WORKDIR}/
37
39
40
+ # code linting conf
41
+ COPY ./.pylintrc ${WORKDIR}/
42
+ COPY ./.coveragerc ${WORKDIR}/
43
+ COPY ./setup.cfg ${WORKDIR}/
44
+
38
45
# markdownlint conf
39
46
COPY ./.markdownlint.yaml ${WORKDIR}/
40
47
41
48
# yamllint conf
42
49
COPY ./.yamllint ${WORKDIR}/
43
50
COPY ./.yamlignore ${WORKDIR}/
44
51
45
- # pylint and covergae
46
- COPY ./.pylintrc ${WORKDIR}/
47
- COPY ./.coveragerc ${WORKDIR}/
48
-
49
52
CMD ["make" , "lint" ]
50
53
51
54
# ##############################################################################
52
55
FROM base AS development
53
56
54
- RUN apk add --update --no-cache make
57
+ COPY ./Makefile ${WORKDIR}/
58
+ COPY ./requirements.txt ${WORKDIR}/
59
+ COPY ./setup.cfg ${WORKDIR}/
55
60
56
- # ##############################################################################
57
- FROM development AS builder
61
+ RUN make dependencies
58
62
59
63
COPY ./src ${WORKDIR}/src
60
- COPY ./requirements.txt ${WORKDIR}/
61
- COPY ./Makefile ${WORKDIR}/
62
- COPY ./setup.cfg ${WORKDIR}/
64
+
63
65
RUN ls -alh
64
66
65
- RUN pip install -r requirements.txt
67
+ # CMD []
68
+
69
+ # ##############################################################################
70
+ FROM development AS builder
71
+
72
+ ENV WORKDIR=/app
73
+ WORKDIR ${WORKDIR}
74
+
75
+ RUN apk add --update --no-cache rsync
76
+
77
+ RUN rsync -av --prune-empty-dirs \
78
+ --exclude '*_test.py' \
79
+ --exclude '*.pyc' \
80
+ --exclude '.venv' \
81
+ --exclude '__pycache__' \
82
+ src/ build/
83
+
84
+ # CMD []
66
85
67
86
# ##############################################################################
68
87
# ## In testing stage, can't use USER, due permissions issue
@@ -78,27 +97,36 @@ ENV BRUTEFORCE=false
78
97
WORKDIR /app
79
98
80
99
COPY ./.coveragerc ${WORKDIR}/
100
+ COPY ./setup.cfg ${WORKDIR}/
101
+
81
102
RUN ls -alh
82
103
83
- CMD ["make" , "test" , "-e" , "{DEBUG}" ]
104
+ CMD ["make" , "test" ]
84
105
85
106
# ##############################################################################
86
107
# ## In production stage
87
108
# # in the production phase, "good practices" such as
88
109
# # WORKDIR and USER are maintained
89
110
# #
90
- FROM builder AS production
111
+ FROM python:3.12.4-alpine3.20 AS production
91
112
92
113
ENV LOG_LEVEL=INFO
93
114
ENV BRUTEFORCE=false
115
+ ENV WORKDIR=/app
116
+ WORKDIR ${WORKDIR}
94
117
95
118
RUN adduser -D worker
96
119
RUN mkdir -p /app
97
120
RUN chown worker:worker /app
98
121
99
- WORKDIR /app
122
+ RUN apk add --update --no-cache make
123
+ COPY ./Makefile ${WORKDIR}/
124
+
125
+ COPY --from=builder /app/build/ ${WORKDIR}/
100
126
101
127
RUN ls -alh
102
128
103
129
USER worker
104
- CMD ["make" , "test" , "-e" , "{DEBUG}" ]
130
+ CMD ["make" , "run" ]
131
+
132
+ # checkov:skip= CKV_DOCKER_2: production image isn't a service process (yet)
0 commit comments