From 89d58ef79300e70e1d54f9447ce1bb7504446e88 Mon Sep 17 00:00:00 2001 From: Christophe Ramet Date: Fri, 10 Jan 2025 15:33:36 +0100 Subject: [PATCH 01/10] [WIP] Working on integrating a developpement mode to the project. For the moment it only update the backend code live while coding. See #47. --- Makefile | 16 ++++++++++ build/build.sh | 10 +++--- build/dev/Dockerfile-geonature-backend | 44 ++++++++++++++++++++++++++ docker-compose-dev.yml | 4 +++ docs/faq.md | 4 +-- 5 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 Makefile create mode 100644 build/dev/Dockerfile-geonature-backend create mode 100644 docker-compose-dev.yml diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b70c7bf --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ +SHELL := /bin/bash + +prod: + docker compose up -d + +submodule_init: + git submodule init + git submodule update + pushd sources/GeoNature &&\ + git submodule init &&\ + git submodule update &&\ + popd + +dev: submodule_init + build/build.sh + docker compose -f docker-compose.yml -f docker-compose-dev.yml up -d diff --git a/build/build.sh b/build/build.sh index cb83398..294b69a 100755 --- a/build/build.sh +++ b/build/build.sh @@ -1,21 +1,19 @@ #!/bin/bash -set -x +set -x set -o nounset export COMPOSE_DOCKER_CLI_BUILD=1 export DOCKER_BUILDKIT=1 - source .env - # GN BACKEND WHEELS docker build -f sources/GeoNature/backend/Dockerfile -t ${GEONATURE_BACKEND_IMAGE}-wheels --target=wheels sources/GeoNature/ # GN BACKEND EXTRA docker build \ - --build-arg GEONATURE_BACKEND_IMAGE=${GEONATURE_BACKEND_IMAGE} \ - -f ./build/Dockerfile-geonature-backend \ - -t ${GEONATURE_BACKEND_EXTRA_IMAGE} . + --build-arg GEONATURE_BACKEND_IMAGE=${GEONATURE_BACKEND_IMAGE} \ + -f ./build/Dockerfile-geonature-backend \ + -t ${GEONATURE_BACKEND_EXTRA_IMAGE} . # GN FRONTEND SOURCE docker build -f sources/GeoNature/frontend/Dockerfile -t ${GEONATURE_FRONTEND_IMAGE}-source --target=source sources/GeoNature/ diff --git a/build/dev/Dockerfile-geonature-backend b/build/dev/Dockerfile-geonature-backend new file mode 100644 index 0000000..2157aee --- /dev/null +++ b/build/dev/Dockerfile-geonature-backend @@ -0,0 +1,44 @@ +ARG GEONATURE_BACKEND_IMAGE="ghcr.io/pnx-si/geonature-backend-local:latest" + +FROM python:3.11-bookworm AS build + +ENV PIP_ROOT_USER_ACTION=ignore +RUN --mount=type=cache,target=/root/.cache \ + pip install --upgrade pip setuptools wheel + + +FROM build AS build-export +WORKDIR /build/ +COPY ./sources/gn_module_export . +RUN python setup.py bdist_wheel + +FROM build AS build-dashboard +WORKDIR /build/ +COPY ./sources/gn_module_dashboard . +RUN python setup.py bdist_wheel + +FROM build AS build-monitoring +WORKDIR /build/ +COPY ./sources/gn_module_monitoring . +RUN python setup.py bdist_wheel + +FROM ${GEONATURE_BACKEND_IMAGE}-wheels AS dev + + +WORKDIR /dist/geonature +RUN --mount=type=cache,target=/var/cache/apt \ + --mount=type=cache,target=/var/lib/apt \ + apt-get update && apt-get install -y libproj-dev proj-bin +COPY --from=build-export /build/dist/*.whl . +COPY --from=build-dashboard /build/dist/*.whl . +COPY --from=build-monitoring /build/dist/*.whl . +RUN rm -f geonature-* +COPY --chown=${UID}:${GUID} /sources/GeoNature /sources/GeoNature +RUN --mount=type=cache,target=/root/.cache \ + pip install -e /sources/GeoNature +RUN --mount=type=cache,target=/root/.cache \ + pip install *.whl sentry_sdk[flask] +RUN rm -f *.whl + + + diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml new file mode 100644 index 0000000..2836376 --- /dev/null +++ b/docker-compose-dev.yml @@ -0,0 +1,4 @@ +services: + geonature-backend: + volumes: + - ./sources/GeoNature:/sources/GeoNature diff --git a/docs/faq.md b/docs/faq.md index c755ba9..ce080cf 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -103,8 +103,8 @@ docker image inspect ghcr.io/pnx-si/geonature-backend-extra --format '{{json .Co - Initialiser et cloner les sous-modules git : ```bash - git submodule init - git submodule update + git submodule update --init --recursive + git submodule update --recursive ``` - Faire de même pour les sous-modules de GeoNature et UsersHub, exemple pour GeoNature : ```bash From 78cef23843aa7f0cb96f283a12591f0d791a6f44 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Fri, 20 Dec 2024 15:05:10 +0100 Subject: [PATCH 02/10] =?UTF-8?q?Pr=C3=A9cisions=20changelog=202.15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index d3db207..fe90ee0 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -20,6 +20,8 @@ - Avant d'effectuer la mise à jour de GeoNature, installer l'extension `ltree` dans le container `postgres` : `docker compose exec postgres psql -U [user_postgres] -d [nom_db_geonature] -f /docker-entrypoint-initdb.d/add-extensions.sql` +- Avec cette nouvelle version, les médias de TaxHub se trouvent dans le dossier `media` de GeoNature. Si vous mettez à jour votre GeoNature, déplacer les médias de TaxHub de l'ancien dossier (`GeoNature-Docker-services/data/taxhub/medias`) vers le nouveau (`GeoNature-Docker-services/data/geonature/media/taxhub`) : +`cp -r data/taxhub/medias/* data/geonature/media/taxhub` - La suppression du container TaxHub implique une modification du docker-compose, n'oubliez pas de récupérer les modifications de ce dernier ([Voir documentation](https://github.com/PnX-SI/GeoNature-Docker-services?tab=readme-ov-file#mettre-%C3%A0-jour-geonature-et-ses-modules)) ## 2.14.2 (2024-06-03) From 3543de789761a863794cc4f5bdd181d8a64a2a89 Mon Sep 17 00:00:00 2001 From: Christophe Ramet Date: Fri, 10 Jan 2025 15:58:07 +0100 Subject: [PATCH 03/10] Giving a default argument silence a warning --- build/Dockerfile-geonature-backend | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/Dockerfile-geonature-backend b/build/Dockerfile-geonature-backend index 1a48061..3d17892 100644 --- a/build/Dockerfile-geonature-backend +++ b/build/Dockerfile-geonature-backend @@ -1,4 +1,4 @@ -ARG GEONATURE_BACKEND_IMAGE +ARG GEONATURE_BACKEND_IMAGE="ghcr.io/pnx-si/geonature-backend-local:latest" FROM python:3.11-bookworm AS build @@ -24,6 +24,7 @@ RUN python setup.py bdist_wheel FROM ${GEONATURE_BACKEND_IMAGE}-wheels AS prod-extra + WORKDIR /dist/geonature RUN --mount=type=cache,target=/var/cache/apt \ --mount=type=cache,target=/var/lib/apt \ From dc395e93cba4eb0e57efde88e743ab4be9e0b886 Mon Sep 17 00:00:00 2001 From: Christophe Ramet Date: Mon, 13 Jan 2025 15:13:24 +0100 Subject: [PATCH 04/10] Changed handling of env var to be able to launch dev with docker compose up (will help for compatibility with devContainer --- .env.sample | 9 +++++++++ Makefile | 11 ++++++++--- README.md | 11 +++++++++++ docs/faq.md | 10 +--------- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/.env.sample b/.env.sample index d2c14c9..3efb0d7 100644 --- a/.env.sample +++ b/.env.sample @@ -45,3 +45,12 @@ GEONATURE_FRONTEND_PROTOCOL="${BASE_PROTOCOL}" GEONATURE_FRONTEND_HOST="${HOST}" GEONATURE_FRONTEND_HOSTPORT="${HOSTPORT}" GEONATURE_FRONTEND_PREFIX="/geonature" + +### DEV CONFIGS Uncomment if you want to use in dev mode +# USERSHUB_IMAGE="ghcr.io/pnx-si/usershub-local:latest" +# GEONATURE_BACKEND_IMAGE="ghcr.io/pnx-si/geonature-backend-local:latest" +# GEONATURE_BACKEND_EXTRA_IMAGE="ghcr.io/pnx-si/geonature-backend-extra-local:latest" +# GEONATURE_FRONTEND_IMAGE="ghcr.io/pnx-si/geonature-frontend-local:latest" +# GEONATURE_FRONTEND_EXTRA_IMAGE="ghcr.io/pnx-si/geonature-frontend-extra-local:latest" + +# COMPOSE_FILE=docker-compose.yml:docker-compose-dev.yml diff --git a/Makefile b/Makefile index b70c7bf..428e5a8 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ SHELL := /bin/bash -prod: +launch: submodule_init docker compose up -d submodule_init: @@ -11,6 +11,11 @@ submodule_init: git submodule update &&\ popd -dev: submodule_init - build/build.sh +build: submodule_init + buil/build.sh + +dev: build docker compose -f docker-compose.yml -f docker-compose-dev.yml up -d + +prod: submodule_init + COMPOSE_FILE=docker-compose.yml docker compose -f docker-compose.yml -f docker-compose-dev.yml up -d \ No newline at end of file diff --git a/README.md b/README.md index a982d13..507b544 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,17 @@ Ces images sont le pendant de [celles publiées sur le dépôt de GeoNature](htt ## Liens utiles +## Lancer une instance de développement +Commencez par vous assurer d'avoir installé make `sudo apt install make` + +Il faut ensuite, dans votre fichier .env décommenter les lignes de l'environnent de dev + +Une fois cela fait, il ne vous reste plus qu'à lancer `make dev`. Selon vos préférences, si la commande +`make submodule_init` a déjà été lancé une fois, vous pouvez simplement lancer un `docker compose up` + +/!\ Attention pour l'instant, l'instance de développement ne lance en mode dev que le backend, pas le frontend ni +les autres services. /!\ + ### GeoNature - [Dépôt](https://github.com/PnX-SI/GeoNature) diff --git a/docs/faq.md b/docs/faq.md index ce080cf..34c0edf 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -103,15 +103,7 @@ docker image inspect ghcr.io/pnx-si/geonature-backend-extra --format '{{json .Co - Initialiser et cloner les sous-modules git : ```bash - git submodule update --init --recursive - git submodule update --recursive - ``` -- Faire de même pour les sous-modules de GeoNature et UsersHub, exemple pour GeoNature : - ```bash - cd sources/GeoNature - git submodule init - git submodule update - cd ../.. + make submodule_init ``` - Apporter vos éventuelles modifications au code source. - Il est conseillé de renommer les images dans le fichier `.env` afin de ne pas rentrer en conflit avec les images officielles, par exemple en leur rajoutant un suffix `-local` : From c0ca1b5e3c3dc5be7261f6ed94305330301b6a74 Mon Sep 17 00:00:00 2001 From: Christophe Ramet Date: Tue, 14 Jan 2025 11:09:22 +0100 Subject: [PATCH 05/10] [WIP] Build.sh is no longer needed. All builds directive were added to docker-compose-dev.yml. --- Makefile | 10 +++---- README.md | 6 ++-- build/build.sh | 3 +- docker-compose-dev.yml | 63 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 428e5a8..d567128 100644 --- a/Makefile +++ b/Makefile @@ -11,11 +11,11 @@ submodule_init: git submodule update &&\ popd -build: submodule_init - buil/build.sh +build: + build/build.sh -dev: build - docker compose -f docker-compose.yml -f docker-compose-dev.yml up -d +dev: submodule_init + COMPOSE_FILE=docker-compose.yml:docker-compose-dev.yml docker compose up -d prod: submodule_init - COMPOSE_FILE=docker-compose.yml docker compose -f docker-compose.yml -f docker-compose-dev.yml up -d \ No newline at end of file + COMPOSE_FILE=docker-compose.yml docker compose up -d diff --git a/README.md b/README.md index 507b544..b5e4b4d 100644 --- a/README.md +++ b/README.md @@ -100,12 +100,12 @@ Ces images sont le pendant de [celles publiées sur le dépôt de GeoNature](htt ## Liens utiles ## Lancer une instance de développement -Commencez par vous assurer d'avoir installé make `sudo apt install make` +Commencez par vous assurer d'avoir installé make `sudo apt install make`. -Il faut ensuite, dans votre fichier .env décommenter les lignes de l'environnent de dev +Il faut ensuite, dans votre fichier .env décommenter les lignes de l'environnent de dev. Une fois cela fait, il ne vous reste plus qu'à lancer `make dev`. Selon vos préférences, si la commande -`make submodule_init` a déjà été lancé une fois, vous pouvez simplement lancer un `docker compose up` +`make submodule_init` a déjà été lancé une fois, vous pouvez simplement lancer un `docker compose up`. /!\ Attention pour l'instant, l'instance de développement ne lance en mode dev que le backend, pas le frontend ni les autres services. /!\ diff --git a/build/build.sh b/build/build.sh index 294b69a..2572bb7 100755 --- a/build/build.sh +++ b/build/build.sh @@ -2,7 +2,8 @@ set -x set -o nounset - +# todo delete this file ? Unless we want people to be able to build without launching compose +# Why Buildkit is used ? export COMPOSE_DOCKER_CLI_BUILD=1 export DOCKER_BUILDKIT=1 source .env diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 2836376..6e9026f 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -1,4 +1,67 @@ services: + + #------------------------------------Builds section start-----------------------------------# + base-backend: + image: ${GEONATURE_BACKEND_IMAGE}-wheels + build: + context: sources/GeoNature + dockerfile: backend/Dockerfile + target: wheels + entrypoint: /bin/bash -c exit + + base-frontend-source: + image: ${GEONATURE_FRONTEND_IMAGE}-source + build: + context: sources/GeoNature + dockerfile: frontend/Dockerfile + target: source + entrypoint: /bin/bash -c exit + + base-frontend-nginx: + image: ${GEONATURE_FRONTEND_IMAGE}-nginx + build: + context: sources/GeoNature + dockerfile: frontend/Dockerfile + target: prod-base + entrypoint: /bin/sh -c exit + + userhub-build: + image: ${USERSHUB_IMAGE} + build: + target: prod + context: sources/UsersHub + volumes: + - ./config/usershub:/dist/config/ + entrypoint: /bin/sh -c exit + #------------------------------------Builds section end------------------------------------# + + + geonature-backend: + depends_on: + base-backend: + condition: service_completed_successfully volumes: - ./sources/GeoNature:/sources/GeoNature + build: + dockerfile: build/dev/Dockerfile-geonature-backend + + geonature-worker: + depends_on: + base-backend: + condition: service_completed_successfully + build: + dockerfile: build/dev/Dockerfile-geonature-backend + + geonature-frontend: + depends_on: + base-frontend-source: + condition: service_completed_successfully + build: + context: . + args: + - GEONATURE_FRONTEND_IMAGE=${GEONATURE_FRONTEND_IMAGE} + # TODO create a dev dockerfiles + dockerfile: build/Dockerfile-geonature-frontend + +# TODO rendre optionel la partie peuplement de la BDD \ No newline at end of file From 8f47ff4a160d96cc2cd6e3685c5d97b74a8ca48e Mon Sep 17 00:00:00 2001 From: Christophe Ramet Date: Tue, 14 Jan 2025 13:39:53 +0100 Subject: [PATCH 06/10] [WIP] Deleted duplicate docker file. Create a dev target in dockerfile --- build/Dockerfile-geonature-backend | 17 ++++++++-- build/dev/Dockerfile-geonature-backend | 44 -------------------------- docker-compose-dev.yml | 6 ++-- 3 files changed, 18 insertions(+), 49 deletions(-) delete mode 100644 build/dev/Dockerfile-geonature-backend diff --git a/build/Dockerfile-geonature-backend b/build/Dockerfile-geonature-backend index 3d17892..ec8ab67 100644 --- a/build/Dockerfile-geonature-backend +++ b/build/Dockerfile-geonature-backend @@ -22,9 +22,7 @@ WORKDIR /build/ COPY ./sources/gn_module_monitoring . RUN python setup.py bdist_wheel -FROM ${GEONATURE_BACKEND_IMAGE}-wheels AS prod-extra - - +FROM ${GEONATURE_BACKEND_IMAGE}-wheels AS base_env WORKDIR /dist/geonature RUN --mount=type=cache,target=/var/cache/apt \ --mount=type=cache,target=/var/lib/apt \ @@ -32,6 +30,19 @@ RUN --mount=type=cache,target=/var/cache/apt \ COPY --from=build-export /build/dist/*.whl . COPY --from=build-dashboard /build/dist/*.whl . COPY --from=build-monitoring /build/dist/*.whl . + + +FROM base_env AS dev +RUN rm -f geonature-* +COPY --chown=${UID}:${GUID} /sources/GeoNature /sources/GeoNature +RUN --mount=type=cache,target=/root/.cache \ + pip install -e /sources/GeoNature +RUN --mount=type=cache,target=/root/.cache \ + pip install *.whl sentry_sdk[flask] +RUN rm -f *.whl + + +FROM base_env AS prod-extra RUN --mount=type=cache,target=/root/.cache \ pip install *.whl sentry_sdk[flask] RUN rm -f *.whl diff --git a/build/dev/Dockerfile-geonature-backend b/build/dev/Dockerfile-geonature-backend deleted file mode 100644 index 2157aee..0000000 --- a/build/dev/Dockerfile-geonature-backend +++ /dev/null @@ -1,44 +0,0 @@ -ARG GEONATURE_BACKEND_IMAGE="ghcr.io/pnx-si/geonature-backend-local:latest" - -FROM python:3.11-bookworm AS build - -ENV PIP_ROOT_USER_ACTION=ignore -RUN --mount=type=cache,target=/root/.cache \ - pip install --upgrade pip setuptools wheel - - -FROM build AS build-export -WORKDIR /build/ -COPY ./sources/gn_module_export . -RUN python setup.py bdist_wheel - -FROM build AS build-dashboard -WORKDIR /build/ -COPY ./sources/gn_module_dashboard . -RUN python setup.py bdist_wheel - -FROM build AS build-monitoring -WORKDIR /build/ -COPY ./sources/gn_module_monitoring . -RUN python setup.py bdist_wheel - -FROM ${GEONATURE_BACKEND_IMAGE}-wheels AS dev - - -WORKDIR /dist/geonature -RUN --mount=type=cache,target=/var/cache/apt \ - --mount=type=cache,target=/var/lib/apt \ - apt-get update && apt-get install -y libproj-dev proj-bin -COPY --from=build-export /build/dist/*.whl . -COPY --from=build-dashboard /build/dist/*.whl . -COPY --from=build-monitoring /build/dist/*.whl . -RUN rm -f geonature-* -COPY --chown=${UID}:${GUID} /sources/GeoNature /sources/GeoNature -RUN --mount=type=cache,target=/root/.cache \ - pip install -e /sources/GeoNature -RUN --mount=type=cache,target=/root/.cache \ - pip install *.whl sentry_sdk[flask] -RUN rm -f *.whl - - - diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 6e9026f..e85098d 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -44,14 +44,16 @@ services: volumes: - ./sources/GeoNature:/sources/GeoNature build: - dockerfile: build/dev/Dockerfile-geonature-backend + dockerfile: build/Dockerfile-geonature-backend + target: dev geonature-worker: depends_on: base-backend: condition: service_completed_successfully build: - dockerfile: build/dev/Dockerfile-geonature-backend + dockerfile: build/Dockerfile-geonature-backend + target: dev geonature-frontend: depends_on: From a676d88f15011f77f1b9c308bef7074e2f27110a Mon Sep 17 00:00:00 2001 From: Christophe Ramet Date: Tue, 14 Jan 2025 14:21:58 +0100 Subject: [PATCH 07/10] Simplification du Makefile et update du Readme --- Makefile | 7 +------ README.md | 3 ++- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index d567128..a8c665f 100644 --- a/Makefile +++ b/Makefile @@ -4,12 +4,7 @@ launch: submodule_init docker compose up -d submodule_init: - git submodule init - git submodule update - pushd sources/GeoNature &&\ - git submodule init &&\ - git submodule update &&\ - popd + git submodule update --init --recursive build: build/build.sh diff --git a/README.md b/README.md index b5e4b4d..b4f00f8 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,8 @@ Ces images sont le pendant de [celles publiées sur le dépôt de GeoNature](htt ## Lancer une instance de développement Commencez par vous assurer d'avoir installé make `sudo apt install make`. -Il faut ensuite, dans votre fichier .env décommenter les lignes de l'environnent de dev. +Il faut ensuite, dans votre fichier .env décommenter les lignes de l'environnement de dev. +Une fois le fichier .env rempli correctement, il faut créer les fichiers de configuration avec `./init-config.sh`. Une fois cela fait, il ne vous reste plus qu'à lancer `make dev`. Selon vos préférences, si la commande `make submodule_init` a déjà été lancé une fois, vous pouvez simplement lancer un `docker compose up`. From fcf3fcecb38a541f23ffc2e70ff73529df868d82 Mon Sep 17 00:00:00 2001 From: Christophe Ramet Date: Wed, 15 Jan 2025 12:20:32 +0100 Subject: [PATCH 08/10] [WIP] Added module to debug mode (export, dashboard and monitoring) --- build/Dockerfile-geonature-backend | 10 ---------- build/build.sh | 3 ++- build/dev/Dockerfile-geonature-backend | 19 +++++++++++++++++++ docker-compose-dev.yml | 22 ++++++++++++++++------ 4 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 build/dev/Dockerfile-geonature-backend diff --git a/build/Dockerfile-geonature-backend b/build/Dockerfile-geonature-backend index ec8ab67..cb6577c 100644 --- a/build/Dockerfile-geonature-backend +++ b/build/Dockerfile-geonature-backend @@ -32,16 +32,6 @@ COPY --from=build-dashboard /build/dist/*.whl . COPY --from=build-monitoring /build/dist/*.whl . -FROM base_env AS dev -RUN rm -f geonature-* -COPY --chown=${UID}:${GUID} /sources/GeoNature /sources/GeoNature -RUN --mount=type=cache,target=/root/.cache \ - pip install -e /sources/GeoNature -RUN --mount=type=cache,target=/root/.cache \ - pip install *.whl sentry_sdk[flask] -RUN rm -f *.whl - - FROM base_env AS prod-extra RUN --mount=type=cache,target=/root/.cache \ pip install *.whl sentry_sdk[flask] diff --git a/build/build.sh b/build/build.sh index 2572bb7..531ed8c 100755 --- a/build/build.sh +++ b/build/build.sh @@ -3,7 +3,8 @@ set -x set -o nounset # todo delete this file ? Unless we want people to be able to build without launching compose -# Why Buildkit is used ? +# Buildkit by default since 2023, we don't need to specify it no more ? Same thing with compose that use it by default +# now export COMPOSE_DOCKER_CLI_BUILD=1 export DOCKER_BUILDKIT=1 source .env diff --git a/build/dev/Dockerfile-geonature-backend b/build/dev/Dockerfile-geonature-backend new file mode 100644 index 0000000..f6cb186 --- /dev/null +++ b/build/dev/Dockerfile-geonature-backend @@ -0,0 +1,19 @@ +ARG GEONATURE_BACKEND_IMAGE="ghcr.io/pnx-si/geonature-backend-local:latest" + + +FROM ${GEONATURE_BACKEND_IMAGE}-wheels AS base_env +WORKDIR /dist/geonature +RUN --mount=type=cache,target=/var/cache/apt \ + --mount=type=cache,target=/var/lib/apt \ + apt-get update && apt-get install -y libproj-dev proj-bin + +RUN rm -f geonature-* +COPY --chown=${UID}:${GUID} /sources/GeoNature /sources/GeoNature +COPY --chown=${UID}:${GUID} /sources/gn_module_export /sources/gn_module_export +COPY --chown=${UID}:${GUID} /sources/gn_module_dashboard /sources/gn_module_dashboard +COPY --chown=${UID}:${GUID} /sources/gn_module_monitoring /sources/gn_module_monitoring +RUN --mount=type=cache,target=/root/.cache \ + pip install *.whl sentry_sdk[flask] +RUN --mount=type=cache,target=/root/.cache \ + pip install -e /sources/GeoNature -e /sources/gn_module_export -e /sources/gn_module_dashboard -e /sources/gn_module_monitoring +RUN rm -f *.whl diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index e85098d..3a5290f 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -34,8 +34,12 @@ services: - ./config/usershub:/dist/config/ entrypoint: /bin/sh -c exit #------------------------------------Builds section end------------------------------------# - - + geonature-install-db: + depends_on: + base-backend: + condition: service_completed_successfully + build: + dockerfile: build/dev/Dockerfile-geonature-backend geonature-backend: depends_on: @@ -43,17 +47,23 @@ services: condition: service_completed_successfully volumes: - ./sources/GeoNature:/sources/GeoNature + - ./sources/gn_module_export:/sources/gn_module_export + - ./sources/gn_module_dashboard:/sources/gn_module_dashboard + - ./sources/gn_module_monitoring:/sources/gn_module_monitoring build: - dockerfile: build/Dockerfile-geonature-backend - target: dev + dockerfile: build/dev/Dockerfile-geonature-backend geonature-worker: depends_on: base-backend: condition: service_completed_successfully + volumes: + - ./sources/GeoNature:/sources/GeoNature + - ./sources/gn_module_export:/sources/gn_module_export + - ./sources/gn_module_dashboard:/sources/gn_module_dashboard + - ./sources/gn_module_monitoring:/sources/gn_module_monitoring build: - dockerfile: build/Dockerfile-geonature-backend - target: dev + dockerfile: build/dev/Dockerfile-geonature-backend geonature-frontend: depends_on: From 44acdddfe043213f928bfe47d431e3c2c065c577 Mon Sep 17 00:00:00 2001 From: Christophe Ramet Date: Fri, 17 Jan 2025 16:25:45 +0100 Subject: [PATCH 09/10] Added traefik to dev services --- README.md | 5 +++-- docker-compose-dev.yml | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b4f00f8..15342c5 100644 --- a/README.md +++ b/README.md @@ -108,8 +108,9 @@ Une fois le fichier .env rempli correctement, il faut créer les fichiers de con Une fois cela fait, il ne vous reste plus qu'à lancer `make dev`. Selon vos préférences, si la commande `make submodule_init` a déjà été lancé une fois, vous pouvez simplement lancer un `docker compose up`. -/!\ Attention pour l'instant, l'instance de développement ne lance en mode dev que le backend, pas le frontend ni -les autres services. /!\ +Vous pouvez visiter votre géonature à l'adresse https://localhost/geonature et le proxy traefik http://localhost:8080/. + +/!\ Attention pour l'instant, l'instance de développement ne lance en mode dev que le backend, pas le frontend. /!\ ### GeoNature diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 3a5290f..68eeb57 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -65,6 +65,22 @@ services: build: dockerfile: build/dev/Dockerfile-geonature-backend + + traefik: + command: + - "--api.insecure=true" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entryPoints.web.address=:80" + - "--entryPoints.web.http.redirections.entrypoint.to=:${HTTPS_PORT}" + - "--entryPoints.web.http.redirections.entrypoint.scheme=https" + - "--entryPoints.websecure.address=:443" + - "--certificatesResolvers.acme-resolver.acme.email=${ACME_EMAIL}" + - "--certificatesResolvers.acme-resolver.acme.storage=/etc/traefik/certs/acme.json" + - "--certificatesResolvers.acme-resolver.acme.tlsChallenge=true" + ports: + - "8080:8080" + geonature-frontend: depends_on: base-frontend-source: From 80a0e9051e2102a58d823617ef5c24c572b160d4 Mon Sep 17 00:00:00 2001 From: Christophe Ramet Date: Fri, 24 Jan 2025 13:59:10 +0100 Subject: [PATCH 10/10] Ajout du frontend au docker compose. Pour l'instant, le mode de fonctionnement n'est pas super propre (requiert une modification d'un fichier de frontend ...) --- Makefile | 7 +++++-- README.md | 11 +++++++---- build/Dockerfile-geonature-frontend | 9 +++++++++ docker-compose-dev.yml | 21 ++++++++++++--------- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index a8c665f..2981285 100644 --- a/Makefile +++ b/Makefile @@ -3,14 +3,17 @@ SHELL := /bin/bash launch: submodule_init docker compose up -d +dev_init: + jq '.projects.geonature.architect.build.configurations.development += {"baseHref": "/geonature/"}' sources/GeoNature/frontend/angular.json > angular.json.tmp && mv angular.json.tmp sources/GeoNature/frontend/angular.json # Pas une super pratique mais pas d'autre solution pour le moment + submodule_init: git submodule update --init --recursive build: build/build.sh -dev: submodule_init +dev: dev_init COMPOSE_FILE=docker-compose.yml:docker-compose-dev.yml docker compose up -d -prod: submodule_init +prod: COMPOSE_FILE=docker-compose.yml docker compose up -d diff --git a/README.md b/README.md index 15342c5..4ef9296 100644 --- a/README.md +++ b/README.md @@ -100,17 +100,20 @@ Ces images sont le pendant de [celles publiées sur le dépôt de GeoNature](htt ## Liens utiles ## Lancer une instance de développement -Commencez par vous assurer d'avoir installé make `sudo apt install make`. +Commencez par vous assurer d'avoir installé make et jq `sudo apt install make jq`. Il faut ensuite, dans votre fichier .env décommenter les lignes de l'environnement de dev. Une fois le fichier .env rempli correctement, il faut créer les fichiers de configuration avec `./init-config.sh`. -Une fois cela fait, il ne vous reste plus qu'à lancer `make dev`. Selon vos préférences, si la commande -`make submodule_init` a déjà été lancé une fois, vous pouvez simplement lancer un `docker compose up`. + +Une fois cela fait, il ne vous reste plus qu'à lancer `make submodule_init` suivit de `make dev`. Selon vos préférences, si la commande +a déjà été lancé une fois, vous pouvez ensuite simplement lancer un `docker compose up`. Le premier lancement peut mettre quelques +dizaines de minutes. Vous pouvez visiter votre géonature à l'adresse https://localhost/geonature et le proxy traefik http://localhost:8080/. -/!\ Attention pour l'instant, l'instance de développement ne lance en mode dev que le backend, pas le frontend. /!\ +(Pour l'instant, pour que le frontend fonctionne, il faut aussi modifier le fichier +`sources/GeoNature/frontend/angular.json`. C'est fait de manière transparente dans le make dev.) ### GeoNature diff --git a/build/Dockerfile-geonature-frontend b/build/Dockerfile-geonature-frontend index 6c15559..3a8ee7d 100644 --- a/build/Dockerfile-geonature-frontend +++ b/build/Dockerfile-geonature-frontend @@ -18,6 +18,15 @@ COPY ./sources/gn_module_monitoring/frontend/ . RUN --mount=type=cache,target=/root/.npm \ npm ci --omit=dev --omit=peer +FROM source-extra as dev-extra +WORKDIR /build +RUN npm link @angular/cli +RUN npm install +EXPOSE 4443 +CMD ["npm", "run", "start", "--", "--host", "0.0.0.0", "--port", "4443"] +ENTRYPOINT [] + + FROM source-extra AS build-extra WORKDIR /build/ diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 68eeb57..efe7794 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -82,14 +82,17 @@ services: - "8080:8080" geonature-frontend: - depends_on: - base-frontend-source: - condition: service_completed_successfully - build: - context: . - args: - - GEONATURE_FRONTEND_IMAGE=${GEONATURE_FRONTEND_IMAGE} - # TODO create a dev dockerfiles - dockerfile: build/Dockerfile-geonature-frontend + depends_on: + base-frontend-source: + condition: service_completed_successfully + command: npm run start -- --host 0.0.0.0 --port 4443 + build: + context: . + dockerfile: build/Dockerfile-geonature-frontend + target: dev-extra + args: + GEONATURE_FRONTEND_IMAGE: ${GEONATURE_FRONTEND_IMAGE} + volumes: + - ./sources/GeoNature/frontend:/build # TODO rendre optionel la partie peuplement de la BDD \ No newline at end of file