Deploy Bold BI Using Traefik Reverse Proxy Without Nginx Dependencies
This section explains how to deploy the Bold BI application with Traefik reverse proxy without Nginx dependencies using a multi-container Docker Compose file.
-
Create a Traefik configuration file with the name
traefik.yml
for the Bold BI application.global: checkNewVersion: true # log default is ERROR log: level: WARN # enable dashboard on 8080 api: insecure: true dashboard: true ping: {} #Auto-proxyy containers if they have proper labels #And also use this file for dynamic config (tls) providers: docker: exposedByDefault: false watch: true file: fileName: /etc/traefik/traefik.yaml watch: true #Listen on 80/443, and redirect all 80 to 443 via 301 entryPoints: web: address: :80 #Comment out these lines if you don't want to redirect everything http: redirections: entryPoint: to: websecure scheme: https permanent: true websecure: address: :443 tls: certificates: - certFile: /certs/<ssl_cert_file_name> keyFile: /certs/<ssl_key_file_name>
<ssl_cert_file_name> - Name of the SSL certificate
Example: domain.crt
<ssl_key_file_name> - Name of the SSL Private key:
Example: domain.key -
Create a
docker-compose.yaml
file that starts your Bold BI application with Traefik reverse proxy.version: '3.3' services: id-web: image: gcr.io/boldbi-294612/bold-identity:6.3.3 restart: on-failure environment: - APP_BASE_URL=https://example.com - INSTALL_OPTIONAL_LIBS=mongodb,mysql,influxdb,snowflake,oracle,npgsql volumes: - boldservices_data:/application/app_data networks: - boldservices healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health-check"] interval: 10s timeout: 10s retries: 5 labels: traefik.enable: 'true' traefik.http.routers.id-web.rule: Host(`example.com`) && PathPrefix(`/`) traefik.http.routers.id-web.entrypoints: websecure traefik.http.routers.id-web.tls: 'true' id-api: image: gcr.io/boldbi-294612/bold-identity-api:6.3.3 restart: on-failure volumes: - boldservices_data:/application/app_data networks: - boldservices healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health-check"] interval: 10s timeout: 10s retries: 5 labels: traefik.enable: 'true' traefik.http.routers.id-api.rule: Host(`example.com`) && PathPrefix(`/api`) traefik.http.routers.id-api.entrypoints: websecure traefik.http.routers.id-api.tls: 'true' id-ums: image: gcr.io/boldbi-294612/bold-ums:6.3.3 restart: on-failure volumes: - boldservices_data:/application/app_data networks: - boldservices healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health-check"] interval: 10s timeout: 10s retries: 5 labels: traefik.enable: 'true' traefik.http.routers.id-ums.rule: Host(`example.com`) && PathPrefix(`/ums`) traefik.http.routers.id-ums.entrypoints: websecure traefik.http.routers.id-ums.tls: 'true' bi-web: image: gcr.io/boldbi-294612/boldbi-server:6.3.3 restart: on-failure volumes: - boldservices_data:/application/app_data networks: - boldservices healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health-check"] interval: 10s timeout: 10s retries: 5 labels: traefik.enable: 'true' traefik.http.routers.bi-web.rule: Host(`example.com`) && PathPrefix(`/bi`) traefik.http.routers.bi-web.entrypoints: websecure traefik.http.routers.bi-web.tls: 'true' bi-api: image: gcr.io/boldbi-294612/boldbi-server-api:6.3.3 restart: on-failure volumes: - boldservices_data:/application/app_data networks: - boldservices healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health-check"] interval: 10s timeout: 10s retries: 5 labels: traefik.enable: 'true' traefik.http.routers.bi-api.rule: Host(`example.com`) && PathPrefix(`/bi/api`) traefik.http.routers.bi-api.entrypoints: websecure traefik.http.routers.bi-api.tls: 'true' bi-jobs: image: gcr.io/boldbi-294612/boldbi-server-jobs:6.3.3 restart: on-failure volumes: - boldservices_data:/application/app_data networks: - boldservices healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health-check"] interval: 10s timeout: 10s retries: 5 labels: traefik.enable: 'true' traefik.http.routers.bi-jobs.rule: Host(`example.com`) && PathPrefix(`/bi/jobs`) traefik.http.routers.bi-jobs.entrypoints: websecure traefik.http.routers.bi-jobs.tls: 'true' bi-dataservice: image: gcr.io/boldbi-294612/boldbi-designer:6.3.3 restart: on-failure # environment: ##Refer to README.md for available environment variables # - widget_bing_map_enable=false # - widget_bing_map_api_key="" # - AppSettings__locale-path="" volumes: - boldservices_data:/application/app_data networks: - boldservices healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health-check"] interval: 10s timeout: 10s retries: 5 labels: traefik.enable: 'true' traefik.http.routers.bi-dataservice.rule: Host(`example.com`) && PathPrefix(`/bi/designer`) traefik.http.routers.bi-dataservice.entrypoints: websecure traefik.http.routers.bi-dataservice.tls: 'true' traefik: image: "traefik:v2.2" healthcheck: test: - CMD - traefik - healthcheck interval: 10s timeout: 5s retries: 3 ports: - "80:80" - "443:443" - "8080:8080" volumes: - <traefik yaml file path>:/etc/traefik/traefik.yaml - <SSL certificate folder path>:/certs/ - /var/run/docker.sock:/var/run/docker.sock networks: - boldservices networks: boldservices: volumes: boldservices_data: driver: local driver_opts: type: 'none' o: 'bind' device: '<host_path_boldbi_data>'
Replace the example.com with a domain name in APP_URL and labels section.
< traefik yaml file path > - Specify the path for the traefik yaml configuration file.
Example: /root/traefik.yaml
< SSL certificate folder path > - Specify the path for the SSL certificate folder.
Example: /root/certs/
Note: Refer to this document to refer to the environment variable for the Bold BI application. -
Allocate a directory in your host machine to store the shared folders for application usage. Replace the directory path with <host_path_boldbi_data> in the docker-compose.yml file.
For example:up\\ Linux: device: ‘/var/boldbi/boldbi_data’
Windows: device: ‘D:/boldbi/boldbi_data’ -
Now, build a container using the following command from the Bold BI docker-compose file location.
docker-compose up -d
-
Configure the Bold BI On-Premise application startup to use the application. Refer to the following link for more details on configuring the application startup.