1. Docker Compose

Preferred method for simple deployment

Free Commit only

docker-compose.yaml
version: '3.2'

services:
    free-commit-api:
        image: romainlavabre/free-commit-api:latest
        port:
            - "8080:8080"
        environment:
            DATASOURCE_URL: ${DATASOURCE_URL}
            DATASOURCE_USERNAME: ${DATASOURCE_USERNAME}
            DATASOURCE_PASSWORD: ${DATASOURCE_PASSWORD}
            DATASOURCE_DIALECT: ${DATASOURCE_DIALECT}
            ENCRYPTION_KEY: ${ENCRYPTION_KEY}
            JWT_SECRET: ${JWT_SECRET}
            JWT_LIFE_TIME: ${JWT_LIFE_TIME}
            DEFAULT_ADMIN_USERNAME: ${DEFAULT_ADMIN_USERNAME}
            DEFAULT_ADMIN_PASSWORD: ${DEFAULT_ADMIN_PASSWORD}
            MAIL_HOST: ${MAIL_HOST}
            MAIL_PORT: ${MAIL_PORT}
            MAIL_FROM: ${MAIL_FROM}
            MAIL_PASSWORD: ${MAIL_PASSWORD}
            MAX_PARALLEL_EXECUTOR: ${MAX_PARALLEL_EXECUTOR}
        networks:
            - free-commit-api
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            # Only if you use openStackDriver
            #- {Your OpenVPN dir}:/ovpn
        restart: always
        container_name: free-commit-api

    free-commit-client:
        image: romainlavabre/free-commit-client:latest
        port:
            - 9090:80
        environment:
            REACT_APP_API_URL: ${FREE_COMMIT_API_URL}
        networks:
            - free-commit-client
        restart: always
        container_name: free-commit-client

networks:
    free-commit-api:
        name: free-commit-api
    free-commit-client:
        name: free-commit-client

With the best reverse proxy on the market

Documentation: https://traefik.io/traefik/

docker-compose.yaml
version: '3.2'

services:
    service-reverse-proxy:
        image: library/traefik:latest
        ports:
            - 80:80
            - 443:443
        networks:
            - service-reverse-proxy
            - free-commit-api
            - free-commit-client
        volumes:
            - ${PWD}/traefik:/etc/traefik/
            - /var/docker-volume/service-reverse-proxy:/tlsKey
            - /var/run/docker.sock:/var/run/docker.sock
        restart: always
        container_name: service-reverse-proxy

    free-commit-api:
        image: romainlavabre/free-commit-api:latest
        environment:
            DATASOURCE_URL: ${DATASOURCE_URL}
            DATASOURCE_USERNAME: ${DATASOURCE_USERNAME}
            DATASOURCE_PASSWORD: ${DATASOURCE_PASSWORD}
            DATASOURCE_DIALECT: ${DATASOURCE_DIALECT}
            ENCRYPTION_KEY: ${ENCRYPTION_KEY}
            JWT_SECRET: ${JWT_SECRET}
            JWT_LIFE_TIME: ${JWT_LIFE_TIME}
            DEFAULT_ADMIN_USERNAME: ${DEFAULT_ADMIN_USERNAME}
            DEFAULT_ADMIN_PASSWORD: ${DEFAULT_ADMIN_PASSWORD}
            MAIL_HOST: ${MAIL_HOST}
            MAIL_PORT: ${MAIL_PORT}
            MAIL_FROM: ${MAIL_FROM}
            MAIL_PASSWORD: ${MAIL_PASSWORD}
            MAX_PARALLEL_EXECUTOR: ${MAX_PARALLEL_EXECUTOR}
        labels:
            - "traefik.enable=true"
            - "traefik.http.routers.free-commit-api.rule=PathPrefix(`/api`)"
            - "traefik.docker.network=free-commit-api"
            - "traefik.http.middlewares.free-commit-api-replace-prefix.stripprefix.prefixes=/api"
            - "traefik.http.routers.free-commit-api.middlewares=free-commit-api-replace-prefix@docker"
            - "traefik.http.routers.free-commit-api.entrypoints=websecure"
            - "traefik.http.routers.free-commit-api.tls=true"
            - "traefik.http.routers.free-commit-api.tls.certresolver=fairfair"
            - "traefik.http.services.free-commit-api.loadbalancer.server.port=8080"
        networks:
            - free-commit-api
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            # Only if you use openStackDriver
            #- {Your OpenVPN dir}:/ovpn
        restart: always
        container_name: free-commit-api

    free-commit-client:
        image: romainlavabre/free-commit-client:latest
        environment:
            REACT_APP_API_URL: ${FREE_COMMIT_API_URL}
        networks:
            - free-commit-client
        labels:
            - "traefik.enable=true"
            - "traefik.http.routers.free-commit-client.rule=PathPrefix(`/`)"
            - "traefik.docker.network=free-commit-client"
            - "traefik.http.routers.free-commit-client.entrypoints=websecure"
            - "traefik.http.routers.free-commit-client.tls=true"
            - "traefik.http.routers.free-commit-client.tls.certresolver={your-resolver-name}"
            - "traefik.http.services.free-commit-client.loadbalancer.server.port=80"
        restart: always
        container_name: free-commit-client

networks:
    service-reverse-proxy:
        name: service-reverse-proxy
    free-commit-api:
        name: free-commit-api
    free-commit-client:
        name: free-commit-client

traefik.yaml
# Docker configuration backend
providers:
    docker:
        defaultRule: "Host(`{{ trimPrefix `/` .Name }}.docker.localhost`)"
        exposedByDefault: false

# API and dashboard configuration
api:
    insecure: false

entryPoints:
    web:
        address: ":80"
        http:
            redirections:
                entryPoint:
                    to: websecure
                    scheme: https
    websecure:
        address: ":443"

certificatesResolvers:
    fairfair:
        acme:
            email: {your-email}
            storage: "/tlsKey/acme.json"
            httpChallenge:
                entryPoint: web

log:
    level: ERROR

⚠️Our compose file is not intended to include a database, any persistent storage should be managed outside of Docker

Last updated