diff --git a/examples/config_example.yml b/examples/config_example.yml index 21d0ac68b173a7f93f3b3e4aa621147ef8fecb09..6f22504039589998c4e4c01899e0568a6ea07824 100644 --- a/examples/config_example.yml +++ b/examples/config_example.yml @@ -5,10 +5,10 @@ all: hostname: localhost # The hosting machine name dashboard_port: 8001 # The desired port (on the hosting machine) for the traefik container dashboard http_port: 8888 # The HTTP port docker will use on the hosting machine - https_port: 8889 # The HTTPS port docker will use on the hosting machine. Required for Authelia + https_port: 8889 # Optional. The HTTPS port docker will use on the hosting machine. Required for Authelia proxy_ip: XXXXXXXXXXXX # IP of the upstream proxy (used by Traefik) - auth_hostname: XXXXXXXXXXXX # Required for Authelia. The authentication domain name. - authelia_config_path: /path/to/authelia_config.yml # Required for Authelia. Path to the Authelia configuration file + authentication_domain_name: XXXXXXXXXXXX # Optional. Required for Authelia. The authentication domain name. + authelia_config_path: /path/to/authelia_config.yml # Optional. Required for Authelia. Path to the Authelia configuration file # galaxy-specific variables galaxy: galaxy_default_admin_email: gga@galaxy.org @@ -26,4 +26,4 @@ tripal: tripal_theme_git_clone: http://gitlab.sb-roscoff.fr/abims/e-infra/tripal_gga.git # Optional. Use this to install another theme. # jbrowse-specific variables jbrowse: - menu_url: "http://localhost:8888/" # Used with run_workflow_phaeoexplorer.py. If present, this variable is used to define jbrowse menu_url, if absent, will use https://hostname:https_port instead \ No newline at end of file + menu_url: "http://localhost:8888/" # Optional. Used with run_workflow_phaeoexplorer.py. If present, this variable is used to define jbrowse menu_url, if absent, will use https://hostname:https_port instead \ No newline at end of file diff --git a/run_workflow_phaeoexplorer.py b/run_workflow_phaeoexplorer.py index 3907a4396dca7e76d8efd612d4ec7673eb4616c3..e97f1fe313b1f13ec5279796a62965658e630f8a 100755 --- a/run_workflow_phaeoexplorer.py +++ b/run_workflow_phaeoexplorer.py @@ -492,9 +492,12 @@ class RunWorkflow(speciesData.SpeciesData): # In case of the Jbrowse workflow, we unfortunately have to manually edit the parameters instead of setting them # as runtime values, using runtime parameters makes the tool throw an internal critical error ("replace not found" error) # Scratchgmod test: need "http" (or "https"), the hostname (+ port) - # TODO --> use menu_url variable in config to set up the menu url + if not self.config["menu_url"]: + jbrowse_menu_url = "https://{hostname}/sp/{genus_sp}/feature/{Genus}/{species}/{id}".format(hostname=self.config["hostname"], genus_sp=self.genus_species, Genus=self.genus_uppercase, species=self.species, id="{id}") + else: + jbrowse_menu_url = self.config["menu_url"] if workflow_name == "Jbrowse": - workflow_dict["steps"]["2"]["tool_state"] = workflow_dict["steps"]["2"]["tool_state"].replace("__MENU_URL__", "https://{hostname}/sp/{genus_sp}/feature/{Genus}/{species}/{id}".format(hostname=self.config["hostname"], genus_sp=self.genus_species, Genus=self.genus_uppercase, species=self.species, id="{id}")) + workflow_dict["steps"]["2"]["tool_state"] = workflow_dict["steps"]["2"]["tool_state"].replace("__MENU_URL__", jbrowse_menu_url) # The UNIQUE_ID is specific to a combination genus_species_strain_sex so every combination should have its unique workflow # in galaxy --> define a naming method for these workflows workflow_dict["steps"]["3"]["tool_state"] = workflow_dict["steps"]["3"]["tool_state"].replace("__FULL_NAME__", self.full_name).replace("__UNIQUE_ID__", self.species_folder_name) diff --git a/templates/gspecies_compose_template.yml.bak b/templates/gspecies_compose_template.yml.bak new file mode 100644 index 0000000000000000000000000000000000000000..da6d64550b74eca0ca9198476360cef43a2fffd5 --- /dev/null +++ b/templates/gspecies_compose_template.yml.bak @@ -0,0 +1,303 @@ +# ./docker_data is created and filled with persistent data that should be backuped + +version: '3.7' +services: + proxy: + image: quay.io/abretaud/nginx-ldap:latest + volumes: + - ./src_data/:/project_data/ + #- /groups/XXX/:/groups/XXX/:ro # We do this when we have symlinks in src_data pointing to /groups/XXX/... + - ./nginx/conf:/etc/nginx/conf.d + networks: + - traefikbig + - genus_species + deploy: + labels: + # Download page + - "traefik.http.routers.genus_species-nginx.rule=(Host(`custom_host`) && PathPrefix(`/sp/genus_species/download`))" +# - "traefik.http.routers.genus_species-nginx.tls=true" +# - "traefik.http.routers.genus_species-nginx.entryPoints=webs" + - "traefik.http.routers.genus_species-nginx.entryPoints=web" # lg +# - "traefik.http.routers.genus_species-nginx.middlewares=sp-auth,sp-app-trailslash,sp-prefix" + - "traefik.http.routers.genus_species-nginx.middlewares=sp-app-trailslash,sp-prefix" # lg + - "traefik.http.services.genus_species-nginx.loadbalancer.server.port=80" + restart_policy: + condition: on-failure + delay: 5s + max_attempts: 3 + window: 120s + + tripal: + image: quay.io/galaxy-genome-annotation/tripal:v2.x + depends_on: + - tripal-db + - elasticsearch + volumes: + - ./docker_data/galaxy/:/export/:ro + - ./src_data/:/project_data/:ro + - ./src_data:/data:ro + - ./banner.png:/var/www/html/banner.png:ro + #- /groups/XXX/:/groups/XXX/:ro # We do this when we have symlinks in src_data pointing to /groups/XXX/... + environment: + DB_HOST: tripal-db.genus_species + BASE_URL_PATH: /sp/genus_species + UPLOAD_LIMIT: 20M + MEMORY_LIMIT: 512M + TRIPAL_GIT_CLONE_MODULES: "https://github.com/abretaud/tripal_rest_api.git[@c6f9021ea5d4c6d7c67c5bd363a7dd9359228bbc] https://github.com/tripal/tripal_elasticsearch.git[@dc7f276046e394a80a7dfc9404cf1a149006eb2a] https://github.com/tripal/tripal_analysis_interpro.git https://github.com/tripal/tripal_analysis_go.git https://github.com/tripal/tripal_analysis_blast.git https://github.com/tripal/tripal_analysis_expression.git[@7240039fdeb4579afd06bbcb989cb7795bd4c342]" + TRIPAL_DOWNLOAD_MODULES: "" + TRIPAL_ENABLE_MODULES: "tripal_analysis_blast tripal_analysis_interpro tripal_analysis_go tripal_rest_api tripal_elasticsearch" + SITE_NAME: "Genus species" + ELASTICSEARCH_HOST: elasticsearch.genus_species + ENABLE_JBROWSE: /jbrowse/?data=data/genus_species_sex + ENABLE_APOLLO: 0 + ENABLE_BLAST: 1 + ENABLE_DOWNLOAD: 1 + ENABLE_WIKI: 0 + ENABLE_GO: 0 + ENABLE_ORTHOLOGY: 0 + ENABLE_ORTHOLOGY_LINKS: 0 + THEME: "custom_theme" # Use this to use another theme + THEME_GIT_CLONE: "custom_git_clone" # Use this to install another theme + ADMIN_PASSWORD: custom_tripal_admin_password # You need to define it and update it in galaxy config below + networks: + - traefikbig + - genus_species + deploy: + labels: + - "traefik.http.routers.genus_species-tripal.rule=(Host(`custom_host`) && PathPrefix(`/sp/genus_species`))" +# - "traefik.http.routers.genus_species-tripal.tls=true" +# - "traefik.http.routers.genus_species-tripal.entryPoints=webs" + - "traefik.http.routers.genus_species-tripal.entryPoints=web" # lg +# - "traefik.http.routers.genus_species-tripal.middlewares=sp-auth,sp-trailslash,sp-prefix,tripal-addprefix" + - "traefik.http.routers.genus_species-tripal.middlewares=sp-trailslash,sp-prefix,tripal-addprefix" # lg + - "traefik.http.services.genus_species-tripal.loadbalancer.server.port=80" + restart_policy: + condition: on-failure + delay: 5s + max_attempts: 3 + window: 120s + + tripal-db: + image: quay.io/galaxy-genome-annotation/chado:1.31-jenkins26-pg9.5 + environment: + - POSTGRES_PASSWORD=postgres + # The default chado image would try to install the schema on first run, + # we just want the tools to be available. + - INSTALL_CHADO_SCHEMA=0 + volumes: + - ./docker_data/tripal_db/:/var/lib/postgresql/data/ + networks: + - genus_species + + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:6.6.1 + #deploy: + #resources: + #limits: + #memory: 500M + volumes: + - ./docker_data/elastic_search_index/:/usr/share/elasticsearch/data/ + environment: + bootstrap.memory_lock: "true" + xpack.security.enabled: "false" + xpack.monitoring.enabled: "false" + xpack.ml.enabled: "false" + xpack.graph.enabled: "false" + xpack.watcher.enabled: "false" + cluster.routing.allocation.disk.threshold_enabled: "false" + ES_JAVA_OPTS: "-Xms500m -Xmx500m" + TAKE_FILE_OWNERSHIP: "true" + networks: + - genus_species + + galaxy: + image: quay.io/galaxy-genome-annotation/docker-galaxy-annotation:gmod + volumes: + - ../galaxy_data_libs_SI.py:/opt/galaxy_data_libs_SI.py + #- ./docker_data/galaxy/:/export/ # Commented for testing TODO: Uncomment in production + - ./src_data/:/project_data/:ro + #- /groups/XXX/:/groups/XXX/:ro # We do this when we have symlinks in src_data pointing to /groups/XXX/... + - ./docker_data/jbrowse/:/jbrowse/data/ + - ./docker_data/apollo/:/apollo-data/ + - ../galaxy_nginx.conf:/etc/nginx/uwsgi_params + environment: + NONUSE: nodejs,proftp,reports,condor + GALAXY_LOGGING: full + GALAXY_CONFIG_BRAND: "Genus species" + GALAXY_CONFIG_ALLOW_LIBRARY_PATH_PASTE: "True" + GALAXY_CONFIG_USE_REMOTE_USER: "True" + GALAXY_CONFIG_REMOTE_USER_MAILDOMAIN: "sb-roscoff.fr" + GALAXY_DEFAULT_ADMIN_EMAIL: "custom_galaxy_default_admin_email" + GALAXY_DEFAULT_ADMIN_USER: "custom_galaxy_defaut_admin_user" + GALAXY_DEFAULT_ADMIN_PASSWORD: "custom_galaxy_default_admin_password" + GALAXY_CONFIG_ADMIN_USERS: "admin@galaxy.org, gga@sb-roscoff.fr, lgueguen@sb-roscoff.fr, alebars@sb-roscoff.fr" # admin@galaxy.org is the default (leave it), gogepp@bipaa is a shared ldap user we use to connect + GALAXY_CONFIG_MASTER_API_KEY: "custom_galaxy_config_master_api_key" + ENABLE_FIX_PERMS: 0 + PROXY_PREFIX: /sp/genus_species/galaxy + GALAXY_TRIPAL_URL: http://tripal.genus_species/tripal/ + GALAXY_TRIPAL_PASSWORD: custom_galaxy_tripal_password # See tripal config above + GALAXY_WEBAPOLLO_URL: http://one-of-the-swarm-node:8888/apollo/ + GALAXY_WEBAPOLLO_USER: "custom_galaxy_web_apollo_user" + GALAXY_WEBAPOLLO_PASSWORD: "custom_galaxy_web_apollo_password" # See tripal config below + GALAXY_WEBAPOLLO_EXT_URL: /apollo/ + GALAXY_CHADO_DBHOST: tripal-db.genus_species + GALAXY_CHADO_DBSCHEMA: chado + GALAXY_AUTO_UPDATE_DB: 1 + GALAXY_AUTO_UPDATE_CONDA: 1 + GALAXY_AUTO_UPDATE_TOOLS: "/galaxy-central/tools_1.yaml" + GALAXY_SHARED_DIR: "" + BLAT_ENABLED: 1 + networks: + - traefikbig + - genus_species + deploy: + labels: + - "traefik.http.routers.genus_species-galaxy.rule=(Host(`custom_host`) && PathPrefix(`/sp/genus_species/galaxy`))" +# - "traefik.http.routers.genus_species-galaxy.tls=true" +# - "traefik.http.routers.genus_species-galaxy.entryPoints=webs" + - "traefik.http.routers.genus_species-galaxy.entryPoints=web" #lg +# - "traefik.http.routers.genus_species-galaxy.middlewares=sp-auth,sp-app-trailslash,sp-app-prefix" + - "traefik.http.routers.genus_species-galaxy.middlewares=sp-app-trailslash,sp-app-prefix" #lg + - "traefik.http.services.genus_species-galaxy.loadbalancer.server.port=80" + restart_policy: + condition: on-failure + delay: 5s + max_attempts: 3 + window: 120s + + jbrowse: + image: quay.io/galaxy-genome-annotation/jbrowse:v1.16.8 + volumes: + - ./docker_data/galaxy/:/export/:ro + - ./src_data/:/project_data/:ro + #- /groups/XXX/:/groups/XXX/:ro # We do this when we have symlinks in src_data pointing to /groups/XXX/... + - ./docker_data/jbrowse/:/jbrowse/data/:ro + networks: + - traefikbig + - genus_species + deploy: + labels: + - "traefik.http.routers.genus_species-jbrowse.rule=(Host(`custom_host`) && PathPrefix(`/sp/genus_species/jbrowse`))" +# - "traefik.http.routers.genus_species-jbrowse.tls=true" +# - "traefik.http.routers.genus_species-jbrowse.entryPoints=webs" + - "traefik.http.routers.genus_species-jbrowse.entryPoints=web" # lg +# - "traefik.http.routers.genus_species-jbrowse.middlewares=sp-auth,sp-app-trailslash,sp-app-prefix" + - "traefik.http.routers.genus_species-jbrowse.middlewares=sp-app-trailslash,sp-app-prefix" #lg + - "traefik.http.services.genus_species-jbrowse.loadbalancer.server.port=80" + restart_policy: + condition: on-failure + delay: 5s + max_attempts: 3 + window: 120s + + blast: + image: quay.io/abretaud/sf-blast:latest + depends_on: + - blast-db + environment: + DB_HOST: blast-db.genus_species + UPLOAD_LIMIT: 20M + MEMORY_LIMIT: 128M + DB_NAME: 'postgres' + ADMIN_EMAIL: 'g.ga@sb-roscoff.fr' # email sender + ADMIN_NAME: 'gga' # email sender name + JOBS_METHOD: 'local' # Can be local (= no sge jobs, but run inside the container) or drmaa (= to submit to a cluster) + JOBS_WORK_DIR: '/tmp/blast_jobs/' # disk accessible both from compute nodes and mounted in this docker (at the same path) + CDD_DELTA_PATH: '/db/cdd_delta/current/flat/cdd_delta' + BLAST_TITLE: 'Genus species blast server' + JOBS_SCHED_NAME: 'blast_gspecies' # job names + #PRE_CMD: '. /local/env/envblast-2.6.0.sh; . /local/env/envpython-3.7.1.sh;' # executed at the beginning of each job + #APACHE_RUN_USER: 'bipaaweb' # username known by sge + #APACHE_RUN_GROUP: 'bipaa' # group known by sge + BASE_URL_PATH: '/sp/genus_species/blast/' + UID: 55914 # username known by sge (for drmaa mode only) + GID: 40259 # group known by sge (for drmaa mode only) + #JOBS_DRMAA_NATIVE: '-p web' # This line and following for slurm + #DRMAA_METHOD: 'slurm' # This line and following for slurm + volumes: + - ../blast-themes/abims/:/var/www/blast/app/Resources/:ro # You can theme the app + - /usr/local/genome2/:/usr/local/genome2/:ro # path for blast executables + - /db/:/db/:ro # for access to indexed blast databases + #- /data1/sge/:/usr/local/sge/:ro # an sge install + #- /xxxx/blast_jobs/:/xxxx/blast_jobs/ # (for drmaa mode only) + - ./blast/banks.yml:/var/www/blast/app/config/banks.yml:ro + - ./blast/links.yml:/etc/blast_links/links.yml:ro + #- /data1/slurm/slurm.conf:/etc/slurm-llnl/slurm.conf:ro # This line and following for slurm + #- /data1/slurm/gres.conf:/etc/slurm-llnl/gres.conf:ro + #- /data1/slurm/cgroup.conf:/etc/slurm-llnl/cgroup.conf:ro + #- /data1/slurm/slurmdbd.conf:/etc/slurm-llnl/slurmdbd.conf:ro + #- /data1/slurm/drmaa/:/etc/slurm-llnl/drmaa/:ro + #- /etc/munge/:/etc/munge/:ro + networks: + - traefikbig + - genus_species + deploy: + labels: + - "traefik.http.routers.genus_species-blast.rule=(Host(`custom_host`) && PathPrefix(`/sp/genus_species/blast`))" +# - "traefik.http.routers.genus_species-blast.tls=true" +# - "traefik.http.routers.genus_species-blast.entryPoints=webs" + - "traefik.http.routers.genus_species-blast.entryPoints=web" # lg +# - "traefik.http.routers.genus_species-blast.middlewares=sp-big-req,sp-auth,sp-app-trailslash,sp-app-prefix" + - "traefik.http.routers.genus_species-blast.middlewares=sp-big-req,sp-app-trailslash,sp-app-prefix" # lg + - "traefik.http.services.genus_species-blast.loadbalancer.server.port=80" + restart_policy: + condition: on-failure + delay: 5s + max_attempts: 3 + window: 120s + + blast-db: +# image: postgres:9.6-alpine + image: postgres:9.5 + environment: + - POSTGRES_PASSWORD=postgres + - PGDATA=/var/lib/postgresql/data/ + volumes: + - ./docker_data/blast_db/:/var/lib/postgresql/data/ + networks: + - genus_species + +# wiki: +# image: quay.io/abretaud/mediawiki +# environment: +# MEDIAWIKI_SERVER: http://localhost +# MEDIAWIKI_PROXY_PREFIX: /sp/genus_species/wiki +# MEDIAWIKI_SITENAME: Genus species +# MEDIAWIKI_SECRET_KEY: XXXXXXXXXX +# MEDIAWIKI_DB_HOST: wiki-db.genus_species +# MEDIAWIKI_DB_PASSWORD: password +# MEDIAWIKI_ADMIN_USER: abretaud # ldap user +# depends_on: +# - wiki-db +# volumes: +# - ./docker_data/wiki_uploads:/images +# #- ../bipaa_wiki.png:/var/www/mediawiki/resources/assets/wiki.png:ro # To change the logo at the top left +# networks: +# - traefikbig +# - genus_species +# deploy: +# labels: +# - "traefik.http.routers.genus_species-blast.rule=(Host(`localhost`) && PathPrefix(`/sp/genus_species/blast`))" +# - "traefik.http.routers.genus_species-blast.tls=true" +# - "traefik.http.routers.genus_species-blast.entryPoints=webs" +# - "traefik.http.routers.genus_species-blast.middlewares=sp-big-req,sp-auth,sp-app-trailslash,sp-app-prefix" +# - "traefik.http.services.genus_species-blast.loadbalancer.server.port=80" +# restart_policy: +# condition: on-failure +# delay: 5s +# max_attempts: 3 +# window: 120s + +# wiki-db: +# image: postgres:9.6-alpine +# volumes: +# - ./docker_data/wiki_db/:/var/lib/postgresql/data/ +# networks: +# - genus_species + +networks: + traefikbig: + external: true + genus_species: + driver: overlay + name: genus_species diff --git a/templates/traefik_compose_template.yml.j2 b/templates/traefik_compose_template.yml.j2 index 49fe94b2ec21fe8ff8750a4e534c16ee486eb74e..5a70edfb26eb2c9166f865bab9036e0c81475244 100644 --- a/templates/traefik_compose_template.yml.j2 +++ b/templates/traefik_compose_template.yml.j2 @@ -89,7 +89,7 @@ services: - ./authelia/:/etc/authelia/:ro deploy: labels: - - "traefik.http.routers.authelia.rule=Host(`{{ auth_hostname }}`)" + - "traefik.http.routers.authelia.rule=Host(`{{ authentication_domain_name }}`)" - "traefik.http.services.authelia.loadbalancer.server.port=9091" restart_policy: condition: on-failure