From 3c4cf30e7a95a516d6189f34efe41ef95e30492d Mon Sep 17 00:00:00 2001 From: Matthieu Benoist <matthieu.benoist@randstaddigital.fr> Date: Wed, 16 Apr 2025 10:11:34 +0200 Subject: [PATCH] Adds dev environnment --- .env.example | 4 ++++ .gitignore | 1 + Makefile | 46 ++++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 22 ++++++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 .env.example create mode 100644 Makefile create mode 100644 docker-compose.yml diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..6ff4b7b --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ + +PROJECT_NAME=quiz +PROJECT_HOSTNAME=quiz.grandlyon.localhost +CERT_SIZE=1 diff --git a/.gitignore b/.gitignore index c507d54..4cdcba4 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ yarn-error.log # Miscellaneous /.angular/cache +/.env .sass-cache/ /connect.lock /coverage diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..37d2336 --- /dev/null +++ b/Makefile @@ -0,0 +1,46 @@ + +ifneq (,$(wildcard ./.env)) + include .env +endif + +.PHONY: config +config: + cp .env.example .env + + +# Docker +up: + docker-compose up -d + +down: + docker-compose down + +ps: + docker-compose ps + +rebuild: + docker-compose down --remove-orphans + docker-compose build --no-cache + docker-compose up -d + + +# Mkcert + +define config_toml +[[tls.certificates]] +certFile = "/certs/${PROJECT_HOSTNAME}+${CERT_SIZE}.pem" +keyFile = "/certs/${PROJECT_HOSTNAME}+${CERT_SIZE}-key.pem" +endef + +export config_toml + +npm-install: docker compose run --rm node npm install + +certs: + mkdir -p ${HOME}/.dockerdev/traefik/certs ${HOME}/.dockerdev/traefik/conf + mkcert ${PROJECT_HOSTNAME} *.${PROJECT_HOSTNAME} ${CERT_ALIASES} + mv *.pem ~/.dockerdev/traefik/certs + @echo "$$config_toml" > ~/.dockerdev/traefik/conf/${PROJECT_NAME}-certs.toml + +install: config certs up + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5f952ef --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +services: + node: + image: trion/ng-cli:17.2.1 + restart: unless-stopped + volumes: + - ./:/app + working_dir: /app + command: ng serve --host 0.0.0.0 --port 4200 + networks: + - webgateway + labels: + - "traefik.enable=true" + - "traefik.http.routers.${PROJECT_NAME}-front.rule=Host(`${PROJECT_HOSTNAME}`)" + - "traefik.http.routers.${PROJECT_NAME}-front.tls=true" + - "traefik.http.routers.${PROJECT_NAME}-front.entrypoints=websecure" + - "traefik.http.services.${PROJECT_NAME}-front.loadbalancer.server.port=4200" + - "traefik.http.services.${PROJECT_NAME}-nginx.loadbalancer.server.port=8080" + +networks: + webgateway: + external: true + -- GitLab