Skip to content

Commit b0dfd5a

Browse files
feat: TT-511 multi-stage builds in dockerfile and add user to run commands inside docker
1 parent 55d06c2 commit b0dfd5a

File tree

4 files changed

+43
-25
lines changed

4 files changed

+43
-25
lines changed

.dockerignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
node_modules
22
.github
3+
dist
4+
coverage
35
Makefile
46
.gitignore
57
.env

Dockerfile

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,34 @@
1-
FROM node:14
1+
FROM node:14 AS development
22

3-
WORKDIR /time-tracker-ui
3+
ENV USERNAME timetracker
4+
ENV HOME /home/${USERNAME}
45

5-
COPY . .
6+
RUN useradd -ms /bin/bash ${USERNAME}
7+
8+
WORKDIR ${HOME}/time-tracker-ui
9+
RUN chown ${USERNAME}:${USERNAME} -R ${HOME}
10+
COPY --chown=${USERNAME}:${USERNAME} . .
11+
12+
USER ${USERNAME}
13+
RUN npm cache clean --force && npm install
14+
EXPOSE 4200
15+
EXPOSE 9876
16+
CMD npm run config && ${HOME}/time-tracker-ui/node_modules/.bin/ng serve --host 0.0.0.0 --disableHostCheck
17+
18+
19+
20+
FROM node:14 AS production
21+
22+
ENV USERNAME timetracker
23+
ENV HOME /home/${USERNAME}
24+
25+
RUN useradd -m -d ${HOME} -s /bin/bash ${USERNAME}
26+
27+
WORKDIR ${HOME}/time-tracker-ui
28+
RUN chown ${USERNAME}:${USERNAME} -R ${HOME}
29+
COPY --chown=${USERNAME}:${USERNAME} . .
30+
31+
USER ${USERNAME}
632
RUN npm cache clean --force && npm install
33+
EXPOSE 4200
34+
CMD npm run config && /time-tracker-ui/node_modules/.bin/ng serve --host 0.0.0.0 --disableHostCheck --prod

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ help:
1414
.PHONY: build
1515
build:
1616
-docker rmi timetracker_ui
17-
docker build -t timetracker_ui -f Dockerfile .
17+
docker-compose build
1818

1919
.PHONY: run
2020
run:

docker-compose.yml

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ services:
44
container_name: timetracker_ui
55
image: timetracker_ui
66
build:
7+
target: development
78
context: .
89
dockerfile: ./Dockerfile
910
ports:
@@ -19,25 +20,12 @@ services:
1920
AUTHORITY_JSON: ${AUTHORITY_JSON}
2021
CLIENT_ID_JSON: ${CLIENT_ID_JSON}
2122
SCOPES_JSON: ${SCOPES_JSON}
22-
working_dir: /time-tracker-ui
23-
command: bash -c "npm run config && /time-tracker-ui/node_modules/.bin/ng serve --host 0.0.0.0 --disableHostCheck"
2423
volumes:
25-
- ./src:/time-tracker-ui/src/
26-
- ./scripts:/time-tracker-ui/scripts/
27-
- ./e2e:/time-tracker-ui/e2e/
28-
- ./coverage:/time-tracker-ui/coverage
29-
- ./.browserslistrc:/time-tracker-ui/.browserslistrc
30-
- ./.dockerignore:/time-tracker-ui/.dockerignore
31-
- ./.editorconfig:/time-tracker-ui/.editorconfig
32-
- ./.eslintrc.js:/time-tracker-ui/.eslintrc.js
33-
- ./.prettierrc:/time-tracker-ui/.prettierrc
34-
- ./angular.json:/time-tracker-ui/angular.json
35-
- ./karma.conf.js:/time-tracker-ui/karma.conf.js
36-
- ./package.json:/time-tracker-ui/package.json
37-
- ./stryker.conf.json:/time-tracker-ui/stryker.conf.json
38-
- ./tailwind.config.js:/time-tracker-ui/tailwind.config.js
39-
- ./tsconfig.app.json:/time-tracker-ui/tsconfig.app.json
40-
- ./tsconfig.json:/time-tracker-ui/tsconfig.json
41-
- ./tsconfig.spec.json:/time-tracker-ui/tsconfig.spec.json
42-
- ./tslint.json:/time-tracker-ui/tslint.json
43-
- ./webpack.config.js:/time-tracker-ui/webpack.config.js
24+
- ./src:/home/timetracker/time-tracker-ui/src/
25+
- ./scripts:/home/timetracker/time-tracker-ui/scripts/
26+
- ./e2e:/home/timetracker/time-tracker-ui/e2e/
27+
- ./coverage:/home/timetracker/time-tracker-ui/coverage
28+
- ./angular.json:/home/timetracker/time-tracker-ui/angular.json
29+
- ./karma.conf.js:/home/timetracker/time-tracker-ui/karma.conf.js
30+
- ./package.json:/home/timetracker/time-tracker-ui/package.json
31+
- ./webpack.config.js:/home/timetracker/time-tracker-ui/webpack.config.js

0 commit comments

Comments
 (0)