From 335c8310409618262c123ff9555c2ca27533e832 Mon Sep 17 00:00:00 2001
From: Romain de Laage <romaindelaage@orange.fr>
Date: Sat, 7 Dec 2019 08:52:18 +0100
Subject: [PATCH] Prise en compte des commentaires de Quentin

---
 Dockerfile         |  21 ++++++++++-----------
 docker-compose.yml |  14 ++------------
 lufi.conf          |   2 +-
 lufi.secrets       |   2 ++
 tini               | Bin 24064 -> 0 bytes
 5 files changed, 15 insertions(+), 24 deletions(-)
 create mode 100644 lufi.secrets
 delete mode 100644 tini

diff --git a/Dockerfile b/Dockerfile
index 4a115569..c63b8c93 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,23 +1,22 @@
 FROM debian:buster
 
+ARG LUFI_BUILD_VERSION=0.04.6
+
+ARG TINI_BUILD_VERSION=v0.18.0
+
 RUN apt-get update \
-&& apt-get -yq install build-essential libssl-dev libio-socket-ssl-perl liblwp-protocol-https-perl libpq-dev git \
-&& cpan -a && cpan Carton \
-&& git clone https://framagit.org/fiat-tux/hat-softwares/lufi.git /lufi
+&& apt-get -yq install build-essential libssl-dev libio-socket-ssl-perl liblwp-protocol-https-perl libpq-dev wget unzip \
+&& apt-get clean && cpan Carton \
+&& wget https://github.com/ldidry/lufi/archive/${LUFI_BUILD_VERSION}.zip && unzip ${LUFI_BUILD_VERSION}.zip \
+&& wget https://github.com/krallin/tini/releases/download/${TINI_BUILD_VERSION}/tini-amd64 && mv tini-amd64 tini \
+&& rm ${LUFI_BUILD_VERSION}.zip && mv lufi-${LUFI_BUILD_VERSION} lufi
 
 COPY lufi.conf /lufi/lufi.conf
 
 WORKDIR /lufi
 
-RUN carton install --deployment --without=test --without=sqlite --without=mysql
-
-VOLUME /lufi/data /lufi/files
+RUN carton install --deployment --without=test --without=sqlite --without=mysql && chmod +x /tini
 
-ADD tini /tini
-
-RUN chmod +x /tini
 ENTRYPOINT ["/tini", "--"]
 
-EXPOSE 8081
-
 CMD ["carton", "exec", "hypnotoad", "-f", "/lufi/script/lufi"]
diff --git a/docker-compose.yml b/docker-compose.yml
index 67a98203..de40219a 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,14 +1,10 @@
 version: '3'
 services:
   lufidb:
-    image: postgres
+    image: postgres:12
     container_name: lufidb
     restart: always
-    networks:
-      - lufi
-    environment:
-      - POSTGRES_PASSWORD=passwd
-      - POSTGRES_USER=lufidb
+    env_file: lufi.secrets
     volumes:
       - /var/lib/postgresql/data
   lufi:
@@ -18,12 +14,6 @@ services:
       - lufidb
     ports:
       - 8081:8081
-    networks:
-      - lufi
     volumes:
       - /lufi/data
       - /lufi/files
-
-networks:
-  lufi:
-    external: true
diff --git a/lufi.conf b/lufi.conf
index 8bde43b2..01ce1c0a 100644
--- a/lufi.conf
+++ b/lufi.conf
@@ -10,7 +10,7 @@
         listen => ['http://0.0.0.0:8081'],
         # if you use Lufi behind a reverse proxy like Nginx, you want to set proxy to 1
         # if you use Lufi directly, let it commented
-        #proxy  => 1,
+        proxy  => 1,
 
         # Please read http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers
         # to adjust this to your server
diff --git a/lufi.secrets b/lufi.secrets
new file mode 100644
index 00000000..972dcbf6
--- /dev/null
+++ b/lufi.secrets
@@ -0,0 +1,2 @@
+POSTGRES_PASSWORD = passwd,
+
diff --git a/tini b/tini
deleted file mode 100644
index 03af82f09e6484df819313cf9fec158d6b4a879d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 24064
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
TAF3a8o-RxbM8ouh*dPo5nwVrk

-- 
GitLab