Skip to content
Merged
Prev Previous commit
Next Next commit
refactor: TT-511 solve comments
  • Loading branch information
mikevillarruel committed Feb 9, 2022
commit 73514aca5dcf9a078194ade2f6dbd60f0e34d668
4 changes: 2 additions & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ dist
coverage
Makefile
.gitignore
src/environments/keys.ts
src/environments/.keys.json
*keys.ts
*.keys.json
19 changes: 8 additions & 11 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ ENV HOME /home/${USERNAME}
RUN useradd -ms /bin/bash ${USERNAME}

WORKDIR ${HOME}/time-tracker-ui
COPY [^.env]* . .
RUN chown ${USERNAME}:${USERNAME} -R ${HOME}
COPY . .
RUN rm -f .env
RUN chown ${USERNAME}:${USERNAME} -R ${HOME}/time-tracker-ui

USER ${USERNAME}
RUN npm cache clean --force && npm install
Expand All @@ -17,23 +18,19 @@ CMD npm run config && ${HOME}/time-tracker-ui/node_modules/.bin/ng serve --host



FROM node:14 AS build

WORKDIR /usr/local/app
COPY ./ /usr/local/app/

RUN npm install
FROM development as build
COPY .env .
RUN npm run build



FROM nginx:1.21 AS production

ENV USERNAME nginx
ENV USERNAME app
RUN useradd -ms /bin/bash ${USERNAME}

COPY nginx.conf /etc/nginx/conf.d/
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /usr/local/app/dist/time-tracker /usr/share/nginx/html
COPY --from=build /home/timetracker/time-tracker-ui/dist/time-tracker /usr/share/nginx/html

RUN chown -R ${USERNAME}:${USERNAME} /var/cache/nginx && \
chown -R ${USERNAME}:${USERNAME} /var/log/nginx && \
Expand Down
72 changes: 33 additions & 39 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,77 +1,71 @@
.PHONY: help
help:
@echo "---------------HELP-----------------"

@echo "- make build --> Create docker image with dependencies needed for development"
@echo "- make run --> Execute timetracker_ui docker container"
@echo "- make stop --> Stop container timetracker_ui"
@echo "- make restart --> Restart container timetracker_ui"
@echo "- make remove --> Delete container timetracker_ui"
@echo "- make test --> Run all tests on docker container timetracker_ui"
@echo "- make publish --> Publish the container image timetracker_ui"

@echo "- make build_prod --> Create docker image with dependencies needed for production"
@echo "- make run_prod --> Execute timetracker_ui_prod docker container"
@echo "- make remove_prod --> Delete container timetracker_ui_prod"
@echo "- make publish_prod --> Publish the container image timetracker_ui_prod"
override SHELL := /bin/bash

@echo "- make login --> Login in respository of docker images"
@echo "------------------------------------"
.PHONY: help
help: ## Show this help message.
@echo 'Usage:'
@echo ' make [target] ...'
@echo
@echo 'Targets:'
@grep --no-filename -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'

.PHONY: build
build:
-docker rmi timetracker_ui
build: ## Create docker image with dependencies needed for development.
docker-compose build

.PHONY: cleanup
cleanup: ## Delete image timetracker_ui
docker rmi timetracker_ui

.PHONY: run
run:
run: ## Execute timetracker_ui docker containe.
docker-compose --env-file ./.env up -d

.PHONY: logs
logs: ## Show logs of timetracker_ui.
docker logs -f timetracker_ui

.PHONY: stop
stop:
stop: ## Stop container timetracker_ui.
docker-compose stop

.PHONY: restart
restart:
restart: ## Restart container timetracker_ui.
docker-compose stop
docker-compose up -d
docker logs -f timetracker_ui

.PHONY: remove
remove:
remove: ## Delete container timetracker_ui.
docker-compose down

.PHONY: test
test:
test: ## Run all tests on docker container timetracker_ui.
docker-compose --env-file ./.env up -d
docker exec -it timetracker_ui bash -c "npm run test"

.PHONY: publish
publish:
docker tag timetracker_ui:latest timetrackerdevregistry.azurecr.io/timetracker_ui:latest
docker push timetrackerdevregistry.azurecr.io/timetracker_ui:latest
publish: ## Publish the container image timetracker_ui.
docker tag timetracker_ui:latest $(registry_url)/timetracker_ui:latest
docker push $(registry_url)/timetracker_ui:latest

.PHONY: build_prod
build_prod:
-docker rmi timetracker_ui_prod
build_prod: ## Create docker image with dependencies needed for production.
docker build --target production -t timetracker_ui_prod -f Dockerfile .

.PHONY: run_prod
run_prod:
run_prod: ## Execute timetracker_ui_prod docker container.
docker run -d -p 4200:4200 --name timetracker_ui_prod timetracker_ui_prod
docker logs -f timetracker_ui_prod

.PHONY: remove_prod
remove_prod:
remove_prod: ## Delete container timetracker_ui_pro.
docker stop timetracker_ui_prod
docker rm timetracker_ui_prod

.PHONY: publish_prod
publish_prod:
docker tag timetracker_ui_prod:latest timetrackerdevregistry.azurecr.io/timetracker_ui_prod:latest
docker push timetrackerdevregistry.azurecr.io/timetracker_ui_prod:latest
publish_prod: ## Publish the container image timetracker_ui_prod.
docker tag timetracker_ui_prod:latest $(registry_url)/timetracker_ui_prod:latest
docker push $(registry_url)/timetracker_ui_prod:latest

.PHONY: login
login:
az acr login --name timetrackerdevregistry
login: ## Login in respository of docker images.
az acr login --name timetrackerdevregistry