From 06bee6dcff5456bc137cec2ff67efe96f498bc3e Mon Sep 17 00:00:00 2001
From: Bryan Brancotte <bryan.brancotte@pasteur.fr>
Date: Mon, 10 Jun 2024 18:45:14 +0200
Subject: [PATCH] how to run with compose in prod

---
 docker-compose-for-prod/.auth               |  2 +
 docker-compose-for-prod/.env                |  4 ++
 docker-compose-for-prod/.example.env        |  4 ++
 docker-compose-for-prod/README.md           | 43 +++++++++++++++++++++
 docker-compose-for-prod/docker-compose.yaml | 12 ++++++
 5 files changed, 65 insertions(+)
 create mode 100644 docker-compose-for-prod/.auth
 create mode 100644 docker-compose-for-prod/.env
 create mode 100644 docker-compose-for-prod/.example.env
 create mode 100644 docker-compose-for-prod/README.md
 create mode 100644 docker-compose-for-prod/docker-compose.yaml

diff --git a/docker-compose-for-prod/.auth b/docker-compose-for-prod/.auth
new file mode 100644
index 0000000..bcd6938
--- /dev/null
+++ b/docker-compose-for-prod/.auth
@@ -0,0 +1,2 @@
+DEPLOY_USER=my-user
+DEPLOY_TOKEN=not-secured-password
\ No newline at end of file
diff --git a/docker-compose-for-prod/.env b/docker-compose-for-prod/.env
new file mode 100644
index 0000000..17f4ba9
--- /dev/null
+++ b/docker-compose-for-prod/.env
@@ -0,0 +1,4 @@
+CI_PROJECT_NAMESPACE=ada-team
+CI_PROJECT_NAME=my-project
+CI_REGISTRY=registry-gitlab.pasteur.fr
+PROD_BRANCH=main
diff --git a/docker-compose-for-prod/.example.env b/docker-compose-for-prod/.example.env
new file mode 100644
index 0000000..f81812a
--- /dev/null
+++ b/docker-compose-for-prod/.example.env
@@ -0,0 +1,4 @@
+CI_PROJECT_NAMESPACE=hub
+CI_PROJECT_NAME=shiny-k8s-example
+CI_REGISTRY=registry-gitlab.pasteur.fr
+PROD_BRANCH=base-python
diff --git a/docker-compose-for-prod/README.md b/docker-compose-for-prod/README.md
new file mode 100644
index 0000000..d1fa210
--- /dev/null
+++ b/docker-compose-for-prod/README.md
@@ -0,0 +1,43 @@
+# Running in production with docker compose
+
+Documentation can be found at https://hub.pages.pasteur.fr/shiny-k8s/user_guide/run_with_compose.html
+
+## Configure your .env
+
+In the `.env` file we provide example to run the compose : 
+
+Given a project hosted at # If your project is hosted at https://gitlab.pasteur.fr/ada-team/my-project/
+where the production branch is named `main`, the file is:
+```ini
+CI_PROJECT_NAMESPACE=ada-team
+CI_PROJECT_NAME=my-project
+CI_REGISTRY=registry-gitlab.pasteur.fr
+PROD_BRANCH=main
+```
+
+## Run it
+```sh
+docker compose up -d
+```
+
+## Run the example
+```sh
+docker compose --env-file .example.env up
+```
+
+## With private registry
+
+You have to auth before starting the compose. Given a .auth file containing :
+```ini
+DEPLOY_USER=my-user
+DEPLOY_TOKEN=not-secured-password
+```
+You should then do:
+```sh
+source .auth
+source .env
+echo $DEPLOY_TOKEN | docker login --username $DEPLOY_USER $CI_REGISTRY --password-stdin
+docker compose up -d
+```
+
+more info can be found at https://docs.docker.com/reference/cli/docker/login/#password-stdin
\ No newline at end of file
diff --git a/docker-compose-for-prod/docker-compose.yaml b/docker-compose-for-prod/docker-compose.yaml
new file mode 100644
index 0000000..840650c
--- /dev/null
+++ b/docker-compose-for-prod/docker-compose.yaml
@@ -0,0 +1,12 @@
+services:
+  shiny-server:
+    image: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/${PROD_BRANCH}:latest
+    pull_policy: always
+    user: 'shiny:shiny'
+    volumes:
+      - ./my_project:/srv/shiny-server/
+      - ./logs:/var/log/shiny-server
+      - ./persistent:/srv/shiny-server/www/persistent
+      - ./data:/srv/shiny-server/data
+    ports:
+      - '3838:3838'
\ No newline at end of file
-- 
GitLab