Skip to content
Prev Previous commit
Next Next commit
feat: TT-511 multi-stage builds in dockerfile and add user to run com…
…mands inside docker
  • Loading branch information
mikevillarruel committed Feb 9, 2022
commit b0dfd5a96c2a26dd30b20ec2592e1e98458250bc
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
node_modules
.github
dist
coverage
Makefile
.gitignore
.env
Expand Down
34 changes: 31 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,34 @@
FROM node:14
FROM node:14 AS development

WORKDIR /time-tracker-ui
ENV USERNAME timetracker
ENV HOME /home/${USERNAME}

COPY . .
RUN useradd -ms /bin/bash ${USERNAME}

WORKDIR ${HOME}/time-tracker-ui
RUN chown ${USERNAME}:${USERNAME} -R ${HOME}
COPY --chown=${USERNAME}:${USERNAME} . .

USER ${USERNAME}
RUN npm cache clean --force && npm install
EXPOSE 4200
EXPOSE 9876
CMD npm run config && ${HOME}/time-tracker-ui/node_modules/.bin/ng serve --host 0.0.0.0 --disableHostCheck



FROM node:14 AS production

ENV USERNAME timetracker
ENV HOME /home/${USERNAME}

RUN useradd -m -d ${HOME} -s /bin/bash ${USERNAME}

WORKDIR ${HOME}/time-tracker-ui
RUN chown ${USERNAME}:${USERNAME} -R ${HOME}
COPY --chown=${USERNAME}:${USERNAME} . .

USER ${USERNAME}
RUN npm cache clean --force && npm install
EXPOSE 4200
CMD npm run config && /time-tracker-ui/node_modules/.bin/ng serve --host 0.0.0.0 --disableHostCheck --prod
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ help:
.PHONY: build
build:
-docker rmi timetracker_ui
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extract rmi to another make task named as cleanup

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

docker build -t timetracker_ui -f Dockerfile .
docker-compose build

.PHONY: run
run:
Expand Down
30 changes: 9 additions & 21 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ services:
container_name: timetracker_ui
image: timetracker_ui
build:
target: development
context: .
dockerfile: ./Dockerfile
ports:
Expand All @@ -19,25 +20,12 @@ services:
AUTHORITY_JSON: ${AUTHORITY_JSON}
CLIENT_ID_JSON: ${CLIENT_ID_JSON}
SCOPES_JSON: ${SCOPES_JSON}
working_dir: /time-tracker-ui
command: bash -c "npm run config && /time-tracker-ui/node_modules/.bin/ng serve --host 0.0.0.0 --disableHostCheck"
volumes:
- ./src:/time-tracker-ui/src/
- ./scripts:/time-tracker-ui/scripts/
- ./e2e:/time-tracker-ui/e2e/
- ./coverage:/time-tracker-ui/coverage
- ./.browserslistrc:/time-tracker-ui/.browserslistrc
- ./.dockerignore:/time-tracker-ui/.dockerignore
- ./.editorconfig:/time-tracker-ui/.editorconfig
- ./.eslintrc.js:/time-tracker-ui/.eslintrc.js
- ./.prettierrc:/time-tracker-ui/.prettierrc
- ./angular.json:/time-tracker-ui/angular.json
- ./karma.conf.js:/time-tracker-ui/karma.conf.js
- ./package.json:/time-tracker-ui/package.json
- ./stryker.conf.json:/time-tracker-ui/stryker.conf.json
- ./tailwind.config.js:/time-tracker-ui/tailwind.config.js
- ./tsconfig.app.json:/time-tracker-ui/tsconfig.app.json
- ./tsconfig.json:/time-tracker-ui/tsconfig.json
- ./tsconfig.spec.json:/time-tracker-ui/tsconfig.spec.json
- ./tslint.json:/time-tracker-ui/tslint.json
- ./webpack.config.js:/time-tracker-ui/webpack.config.js
- ./src:/home/timetracker/time-tracker-ui/src/
- ./scripts:/home/timetracker/time-tracker-ui/scripts/
- ./e2e:/home/timetracker/time-tracker-ui/e2e/
- ./coverage:/home/timetracker/time-tracker-ui/coverage
- ./angular.json:/home/timetracker/time-tracker-ui/angular.json
- ./karma.conf.js:/home/timetracker/time-tracker-ui/karma.conf.js
- ./package.json:/home/timetracker/time-tracker-ui/package.json
- ./webpack.config.js:/home/timetracker/time-tracker-ui/webpack.config.js