From 7dabcc4305c8f7d654dca35fc3e3db37a3b5a70f Mon Sep 17 00:00:00 2001
From: Gilles Filippini <pini@debian.org>
Date: Thu, 20 May 2021 17:02:53 +0200
Subject: [PATCH] feat(docker): install dex for dev and test images

---
 .gitlab-ci.yml            |  4 +++-
 release/Makefile          |  5 ++++-
 release/docker/Dockerfile | 11 ++++++++---
 release/docker/dex.sh     |  5 +++++
 4 files changed, 20 insertions(+), 5 deletions(-)
 create mode 100755 release/docker/dex.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6ab33b0c3..32fa50d0e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -164,7 +164,7 @@ releases:x64:
     - docker info
   script:
     - docker pull $CI_REGISTRY_IMAGE:$IMAGE_TAG || true
-    - docker build --cache-from $CI_REGISTRY_IMAGE:$IMAGE_TAG --pull -t "$CI_REGISTRY_IMAGE:$IMAGE_TAG" -f release/docker/Dockerfile .
+    - docker build --cache-from $CI_REGISTRY_IMAGE:$IMAGE_TAG --pull -t "$CI_REGISTRY_IMAGE:$IMAGE_TAG" --build-arg="INSTALL_DEX=$INSTALL_DEX" -f release/docker/Dockerfile .
     #- docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $CI_REGISTRY
     #- docker push "$CI_REGISTRY_IMAGE:$IMAGE_TAG"
     # Temporary push on dockerhub 
@@ -183,6 +183,7 @@ package:test:docker-test-image:
     - when: manual
   variables:
     IMAGE_TAG: "test-image"
+    INSTALL_DEX: "yes"
 
 package:dev:docker:
   extends: .docker-build-app-image
@@ -192,6 +193,7 @@ package:dev:docker:
     - if: $CI_COMMIT_BRANCH == "dev"
   variables:
     IMAGE_TAG: "dev"
+    INSTALL_DEX: "yes"
 
 package:prod:docker:
   stage: package
diff --git a/release/Makefile b/release/Makefile
index 4a2cec182..6efcb75d8 100644
--- a/release/Makefile
+++ b/release/Makefile
@@ -37,6 +37,7 @@ ARCH = $(shell uname -m | sed -e "s/86_//")
 PLATFORM = $(shell uname -s | tr A-Z a-z)
 ADD_DEBUG = Y
 DEST =
+INSTALL_DEX = no
 
 # Keep all intermediate targets
 .SECONDARY:
@@ -84,9 +85,11 @@ base-gui: $(call nodedep,duniter-ui) base
 
 # Build the base
 .PHONY: base
+base: install_dex=$(filter yes,$(INSTALL_DEX))
 base: | node_modules
-	@cargo build --release -p duniter-cli
+	@cargo build --release -p duniter-cli $(if $(install_dex),-p duniter-dbex,)
 	@mv target/release/duniter bin/duniter
+	@$(if $(install_dex),mv target/release/dex bin/dex,:)
 
 index.html: $(call nodedep,duniter-ui) $(addprefix node_modules/,$(leveldown.COMPILED) $(sqlite3.COMPILED))
 	@sed -i "s/\"main\": \"index.js\",/\"main\": \"index.html\",/" package.json
diff --git a/release/docker/Dockerfile b/release/docker/Dockerfile
index a4689d4ac..edac20d7c 100644
--- a/release/docker/Dockerfile
+++ b/release/docker/Dockerfile
@@ -9,6 +9,7 @@ LABEL version="0.1.0"
 LABEL description="Duniter server (Crypto-currency software to manage libre currency such as Äž1)"
 
 ARG DUNITER_UI_VER="1.7.x"
+ARG INSTALL_DEX="no"
 
 RUN apk update && \
 	apk add ca-certificates curl && \
@@ -25,8 +26,8 @@ RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
 
 # build duniter
 RUN PATH=${HOME}/.cargo/bin:${PATH} \
-	RUSTFLAGS="-C target-feature=-crt-static" \
-	make -C release ADD_DEBUG=N server-gui clean \
+	RUSTFLAGS="-C target-feature=-crt-static -L/usr/lib" \
+	make -C release ADD_DEBUG=N INSTALL_DEX=${INSTALL_DEX} server-gui clean \
 	&& rm -rf work/extra
 
 # ------------------------------------------------------------------------------
@@ -35,6 +36,8 @@ RUN PATH=${HOME}/.cargo/bin:${PATH} \
 
 FROM node:10-alpine
 
+ARG INSTALL_DEX="no"
+
 # install jq
 RUN apk add jq
 
@@ -46,8 +49,10 @@ RUN mkdir -p /var/lib/duniter /etc/duniter && chown duniter:duniter /var/lib/dun
 # copy the build artifact from the build stage
 COPY --from=build --chown=duniter:duniter /duniter/work /duniter
 
-# copy duniter wrapper
+# copy wrappers
 COPY release/docker/duniter.sh /usr/bin/duniter
+COPY release/docker/dex.sh /usr/bin/dex
+RUN [ "$INSTALL_DEX" = yes ] || rm /usr/bin/dex
 
 # copy entrypoint
 COPY release/docker/docker-entrypoint.sh /
diff --git a/release/docker/dex.sh b/release/docker/dex.sh
new file mode 100755
index 000000000..48edbd204
--- /dev/null
+++ b/release/docker/dex.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+if [ "$1" != --home ]; then
+  set -- --home /var/lib/duniter "$@"
+fi
+exec /duniter/bin/dex "$@"
-- 
GitLab