@@ -4,68 +4,107 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0.302-alpine3.19-amd64 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
10
12
ENV WORKDIR=/app
11
13
WORKDIR ${WORKDIR}
12
14
13
- COPY ./docs ${WORKDIR}/docs
14
15
RUN apk add --update --no-cache make nodejs npm
15
16
RUN apk add --update --no-cache yamllint
16
17
17
18
RUN npm install -g --ignore-scripts markdownlint-cli
18
19
19
- # ##############################################################################
20
- FROM base AS development
20
+ # [!TIP] Use a bind-mount to "/app" to override following "copys"
21
+ # for lint and test against "current" sources in this stage
21
22
22
- RUN apk add --update --no-cache make
23
+ # YAML sources
24
+ COPY ./.github ${WORKDIR}/
25
+ COPY ./compose.yaml ${WORKDIR}/
26
+
27
+ # Markdown sources
28
+ COPY ./docs ${WORKDIR}/
29
+ COPY ./README.md ${WORKDIR}/
30
+ COPY ./LICENSE.md ${WORKDIR}/
31
+ COPY ./CODE_OF_CONDUCT.md ${WORKDIR}/
32
+
33
+ # Code source
34
+ COPY ./algorithm-exercises-csharp ${WORKDIR}/algorithm-exercises-csharp
35
+ COPY ./algorithm-exercises-csharp-test ${WORKDIR}/algorithm-exercises-csharp-test
36
+ COPY ./algorithm-exercises-csharp.sln ${WORKDIR}/algorithm-exercises-csharp.sln
37
+ COPY ./Makefile ${WORKDIR}/
38
+
39
+ # code linting conf
40
+ COPY ./.editorconfig ${WORKDIR}/
41
+
42
+ # markdownlint conf
43
+ COPY ./.markdownlint.yaml ${WORKDIR}/
44
+
45
+ # yamllint conf
46
+ COPY ./.yamllint ${WORKDIR}/
47
+ COPY ./.yamlignore ${WORKDIR}/
23
48
24
49
# ##############################################################################
25
- FROM development AS builder
50
+ FROM base AS development
26
51
27
52
COPY ./algorithm-exercises-csharp ${WORKDIR}/algorithm-exercises-csharp
53
+ COPY ./algorithm-exercises-csharp-test ${WORKDIR}/algorithm-exercises-csharp-test
28
54
COPY ./algorithm-exercises-csharp.sln ${WORKDIR}/algorithm-exercises-csharp.sln
29
55
COPY ./Makefile ${WORKDIR}/
56
+
57
+ RUN make build
58
+ RUN ls -alh
59
+
60
+ # CMD []
61
+ # ##############################################################################
62
+ FROM development AS builder
63
+
64
+ RUN dotnet publish --self-contained --runtime linux-musl-x64
30
65
RUN ls -alh
31
66
67
+ CMD ["ls" , "-alh" ]
68
+
32
69
# ##############################################################################
33
70
# ## In testing stage, can't use USER, due permissions issue
34
71
# # in github actions environment:
35
72
# #
36
73
# # https://docs.github.com/en/actions/creating-actions/dockerfile-support-for-github-actions
37
74
# #
38
- FROM builder AS testing
75
+ FROM development AS testing
39
76
40
77
ENV LOG_LEVEL=INFO
41
78
ENV BRUTEFORCE=false
42
79
43
80
WORKDIR /app
44
81
45
- COPY ./algorithm-exercises-csharp-test ${WORKDIR}/algorithm-exercises-csharp-test
46
82
RUN ls -alh
47
83
48
- CMD ["dotnet " , "test" ]
84
+ CMD ["make " , "test" ]
49
85
50
86
# ##############################################################################
51
87
# ## In production stage
52
88
# # in the production phase, "good practices" such as
53
- # # WORKSPACE and USER are maintained
89
+ # # WORKDIR and USER are maintained
54
90
# #
55
- FROM builder AS production
91
+ FROM mcr.microsoft.com/dotnet/runtime:8.0.3-alpine3.19-amd64 AS production
56
92
57
- ENV LOG_LEVEL=INFO
93
+ ENV LOG_LEVEL=info
58
94
ENV BRUTEFORCE=false
95
+ ENV WORKDIR=/app
96
+ WORKDIR ${WORKDIR}
59
97
60
98
RUN adduser -D worker
61
99
RUN mkdir -p /app
62
100
RUN chown worker:worker /app
63
101
64
- WORKDIR /app
102
+ RUN apk add --update --no-cache make
103
+ COPY ./Makefile ${WORKDIR}/
104
+ COPY --from=builder /app/algorithm-exercises-csharp/bin/Release/net8.0/algorithm-exercises-csharp.dll ${WORKDIR}/
105
+ COPY --from=builder /app/algorithm-exercises-csharp/bin/Release/net8.0/algorithm-exercises-csharp.runtimeconfig.json ${WORKDIR}/
65
106
66
- COPY ./.pylintrc ${WORKDIR}/
67
- COPY ./.coveragerc ${WORKDIR}/
68
107
RUN ls -alh
69
108
70
109
USER worker
71
- CMD ["make" , "test" , "-e" , "{DEBUG} " ]
110
+ CMD ["make" , "run " ]
0 commit comments