From 734fc4634ce45bf18994b6586652486f92e4818d Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Mon, 30 Dec 2024 18:27:18 +0100 Subject: [PATCH] wip: ci/cd restart container --- .gitea/workflows/deploy_in_prod.yml | 32 +++++++++++++- docker-compose.yml | 67 +++++++++++++++++++++++++++++ src/main/docker/Dockerfile.native | 4 +- 3 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 docker-compose.yml diff --git a/.gitea/workflows/deploy_in_prod.yml b/.gitea/workflows/deploy_in_prod.yml index 85bc50f..1dac736 100644 --- a/.gitea/workflows/deploy_in_prod.yml +++ b/.gitea/workflows/deploy_in_prod.yml @@ -50,5 +50,33 @@ jobs: username: ${{ secrets.SSH_USER }} port: ${{ secrets.SSH_PORT }} key: ${{ secrets.SSH_KEY }} - source: "target/*-runner,src/main/resources/cacerts" - target: ${{ secrets.TARGET_DIR }} # Need to create it first on the VPS \ No newline at end of file + source: "target/*-runner,src/main/resources/cacerts,src/main/docker/Dockerfile.native,docker-compose.yml" + target: ${{ secrets.TARGET_DIR }} # Need to create it first on the VPS + + - name: Re-start ffsaf container + uses: appleboy/ssh-action@v1.0.0 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.SSH_USER }} + port: ${{ secrets.SSH_PORT }} + key: ${{ secrets.SSH_KEY }} + script: | + cd ${{ secrets.TARGET_DIR }} + docker stop ffsaf + docker rm ffsaf + docker compose up --build -d ffsaf + + - name: Check ffsaf container + uses: appleboy/ssh-action@v1.0.0 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.SSH_USER }} + port: ${{ secrets.SSH_PORT }} + key: ${{ secrets.SSH_KEY }} + script: | + if docker ps | grep ffsaf; then + echo 'Container is running' + else + echo 'Container is not running' + exit 1 # This mark the pipeline as failed + fi \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..cfa8752 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,67 @@ +version: "2.3" + +services: + ffsaf: + container_name: ffsaf + hostname: ffsaf + restart: always + build: + context: . + dockerfile: src/main/docker/Dockerfile.native + volumes: + - ${PWD}/ffsaf.properties:/work/config/application.properties + - ${PWD}/ffsaf_cle_prive.jks:/work/cle_prive.jks + - ${PWD}/ffsaf-media:/work/media + depends_on: + - ffsaf-db + networks: + - intra + - nginx + + ffsaf-db: + image: postgres + hostname: ffsaf-db + container_name: ffsaf-db + user: postgres + restart: always + networks: + - pgadmin + - intra + healthcheck: + test: [ "CMD-SHELL", "pg_isready" ] + interval: 5s + timeout: 3s + retries: 10 + volumes: + - ${PWD}/postgres-data:/var/lib/postgresql/data + env_file: prod.env + +# ftpd: +# build: +# context: ./pure_ftpd +# dockerfile: Dockerfile2 +# container_name: ftpd +# ports: +# - "10042:21" +# - "30000-30009:30000-30009" +# volumes: +# - /data/git_data:/home/data/ +# - ${PWD}/pure_ftpd/passwd:/etc/pure-ftpd/passwd +# - ${PWD}/pure_ftpd/ssl:/etc/ssl/private/:ro +# environment: +# PUBLICHOST: 0.0.0.0 +# FTP_USER_NAME: test +# FTP_USER_PASS: test +# FTP_USER_HOME: /home/data +# ADDED_FLAGS: --tls=1 +# restart: no + +networks: + intra: + driver: bridge + pgadmin: + name: pgadmin + external: true + nginx: + name: ${NETWORK_NAME:-gateway} + external: true \ No newline at end of file diff --git a/src/main/docker/Dockerfile.native b/src/main/docker/Dockerfile.native index f30745c..06f4983 100644 --- a/src/main/docker/Dockerfile.native +++ b/src/main/docker/Dockerfile.native @@ -19,8 +19,8 @@ WORKDIR /work/ RUN chown 1001 /work \ && chmod "g+rwX" /work \ && chown 1001:root /work -COPY --chown=1001:root ffsaf/target/*-runner /work/application -COPY --chown=1001:root ffsaf/src/main/resources/cacerts /work/cacerts +COPY --chown=1001:root target/*-runner /work/application +COPY --chown=1001:root src/main/resources/cacerts /work/cacerts RUN mkdir /work/media && chown -R 1001:root /work/media EXPOSE 8080