From 465eb89ab84e5114b68503fbc4e77a0117c78ab7 Mon Sep 17 00:00:00 2001 From: Cian Hughes Date: Wed, 10 Jan 2024 17:05:07 +0000 Subject: [PATCH] Lint & general cleanup --- deploy | 12 +++--- pyproject.toml | 6 +-- stack.yaml | 113 ++++++++++++++++++++++++------------------------- 3 files changed, 63 insertions(+), 68 deletions(-) diff --git a/deploy b/deploy index f5500ef..df003b1 100755 --- a/deploy +++ b/deploy @@ -1,12 +1,12 @@ #!/usr/bin/env poetry run python -from typing import Optional -import typer # type: ignore import subprocess -import portainer # type: ignore -import docker # type: ignore +from typing import Optional + +import docker # type: ignore +import portainer # type: ignore import tomllib -from pathlib import Path +import typer # type: ignore def docker_deploy_core(stack_name: Optional[str] = "core"): @@ -52,8 +52,6 @@ def docker_deploy_stack(username: str, password: str, stack_name: Optional[str] repository_url=fetch_repository_url(), ) ) - # breakpoint() #! TODO: Implement way of using portainer api to deploy stack - # subprocess.run(["docker", "stack", "deploy", "-c", "stack.yaml", stack_name]) def docker_deploy_all(username: str, password: str, core_name: Optional[str] = "core", stack_name: Optional[str] = "stack"): diff --git a/pyproject.toml b/pyproject.toml index 0416bff..b73a74c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,14 +5,12 @@ description = "" authors = ["Cian Hughes "] readme = "README.md" repository = "https://github.com/Cian-H/I-Form_Research_Server_Stack" -packages = [ - { include = "deploy", from = "." }, -] +packages = [{ include = "deploy", from = "." }] [tool.poetry.dependencies] python = "^3.11" typer = "^0.9.0" -portainer = {path = "src/portainer_api"} +portainer = { path = "src/portainer_api" } docker = "^7.0.0" [tool.poetry.group.dev.dependencies] diff --git a/stack.yaml b/stack.yaml index cbcba67..c35d3f5 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,6 +1,5 @@ version: "3.8" - services: ###~~~~~~ First, we should plan our network management services ~~~~~~### # Obviously, we should add the portainer agent service for managing swarm resources @@ -52,15 +51,15 @@ services: # - traefik_cert # - traefik_key whoami: - image: "containous/whoami" - labels: - - "traefik.enable=true" - # - "traefik.http.routers.whoami.entrypoints=web" - - "traefik.http.routers.whoami.rule=Host(`whoami.${traefikhost}`)" - - "traefik.http.routers.whoami.tls=true" - - "traefik.http.routers.whoami.tls.certresolver=myresolver" - networks: - - i-form_research_server_stack + image: "containous/whoami" + labels: + - "traefik.enable=true" + # - "traefik.http.routers.whoami.entrypoints=web" + - "traefik.http.routers.whoami.rule=Host(`whoami.${traefikhost}`)" + - "traefik.http.routers.whoami.tls=true" + - "traefik.http.routers.whoami.tls.certresolver=myresolver" + networks: + - i-form_research_server_stack ###~~~~~~ Then, we will need numerous databases for our various services ~~~~~~### # We want neo4j as a graph database that can easily be used by other services neo4j: @@ -115,23 +114,23 @@ services: restart_policy: condition: on-failure cap_drop: - - AUDIT_WRITE - - MKNOD - - SYS_CHROOT - - SETFCAP - - NET_RAW + - AUDIT_WRITE + - MKNOD + - SYS_CHROOT + - SETFCAP + - NET_RAW cap_add: - - SYS_NICE + - SYS_NICE secrets: - - elabftw_sql_key + - elabftw_sql_key environment: - MYSQL_DATABASE: "elabftw" - MYSQL_USER: "elabftw" - MYSQL_PASSWORD: /run/secrets/elabftw_sql_key - MYSQL_RANDOM_ROOT_PASSWORD: 1 - TZ: "Europe/Paris" + MYSQL_DATABASE: "elabftw" + MYSQL_USER: "elabftw" + MYSQL_PASSWORD: /run/secrets/elabftw_sql_key + MYSQL_RANDOM_ROOT_PASSWORD: 1 + TZ: "Europe/Paris" volumes: - - elabftw_sql:/var/lib/mysql + - elabftw_sql:/var/lib/mysql networks: - i-form_research_server_stack ###~~~~~~ Then, we plan our general utility services ~~~~~~### @@ -205,43 +204,43 @@ services: restart_policy: condition: on-failure depends_on: - - mysql + - mysql cap_drop: - - ALL + - ALL cap_add: - - CHOWN - - SETGID - - SETUID - - FOWNER - - DAC_OVERRIDE + - CHOWN + - SETGID + - SETUID + - FOWNER + - DAC_OVERRIDE secrets: - - elabftw_sql_key - - elabftw_secret_key + - elabftw_sql_key + - elabftw_secret_key environment: - SECRET_KEY: /run/secrets/elabftw_secret_key - DB_HOST: "mysql" - DB_PORT: "3306" - DB_NAME: "elabftw" - DB_USER: "elabftw" - DB_PASSWORD: "/run/secrets/elabftw_sql_key" - # - DB_PASSWORD=$$DB_PASSWORD - # DB_CERT_PATH: "/mysql-cert/cert.pem" - PHP_TIMEZONE: "Europe/Paris" - TZ: "Europe/Paris" - SERVER_NAME: "I-Form eLabFTW" - SITE_URL: "elab.i-form.ie" - DISABLE_HTTPS: 1 - ENABLE_LETSENCRYPT: 0 + SECRET_KEY: /run/secrets/elabftw_secret_key + DB_HOST: "mysql" + DB_PORT: "3306" + DB_NAME: "elabftw" + DB_USER: "elabftw" + DB_PASSWORD: "/run/secrets/elabftw_sql_key" + # - DB_PASSWORD=$$DB_PASSWORD + # DB_CERT_PATH: "/mysql-cert/cert.pem" + PHP_TIMEZONE: "Europe/Paris" + TZ: "Europe/Paris" + SERVER_NAME: "I-Form eLabFTW" + SITE_URL: "elab.i-form.ie" + DISABLE_HTTPS: 1 + ENABLE_LETSENCRYPT: 0 ports: - - "443:443" + - "443:443" volumes: - - elabftw_uploads:/elabftw/uploads - - elabftw_var:/var/elabftw - - elabftw_etc:/etc/elabftw - # if you have enabled letsencrypt, uncomment the line below - # path to the folder with TLS certificate + private key - # host:container - #- /etc/letsencrypt:/ssl + - elabftw_uploads:/elabftw/uploads + - elabftw_var:/var/elabftw + - elabftw_etc:/etc/elabftw + # if you have enabled letsencrypt, uncomment the line below + # path to the folder with TLS certificate + private key + # host:container + #- /etc/letsencrypt:/ssl networks: - i-form_research_server_stack labels: @@ -277,7 +276,7 @@ services: # - "traefik.http.routers.solr.rule=Host(`solr.${traefikhost}`)" # - "traefik.http.services.solr.loadbalancer.server.port=8983" # - "traefik.http.routers.solr.tls=true" - # - "traefik.http.routers.solr.tls.certresolver=myresolver" + # - "traefik.http.routers.solr.tls.certresolver=myresolver" # networks: # - i-form_research_server_stack @@ -311,7 +310,7 @@ services: # - traefik.http.services.minio-console.loadbalancer.server.port=9001 # networks: # - i-form_research_server_stack - + # dataverse: # image: coronawhy/dataverse:5.13.allclouds # tty: true # DEBUG @@ -561,4 +560,4 @@ secrets: elabftw_secret_key: external: true dataverse_postgres_key: - external: true \ No newline at end of file + external: true