Giter Site home page Giter Site logo

mpolinowski / osticket-nomad Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 1.0 3 KB

Deploying OSTicket - Docker, Docker-Compose and Hashicorp Nomad

Home Page: https://mpolinowski.github.io/docs/DevOps/Hashicorp/2022-10-25-hashicorp-nomad-for-osticket-part-ii/2022-10-25

HCL 100.00%
docker docker-compose hashicorp-consul hashicorp-nomad osticket

osticket-nomad's Introduction

OSTicket

Deploy OSTicket using Docker, Docker-Compose or Hashicorp Nomad.

Docker

OSTicket recommends to use the official Docker Image from hub.docker.com:

docker pull osticket/osticket:latest
docker pull mariadb:latest
docker run --name osticket_mysql -d -e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_USER=osticket -e MYSQL_PASSWORD=secret -e MYSQL_DATABASE=osticket mariadb:latest
docker run --name osticket -d --link osticket_mysql:mysql -p 8080:80 osticket/osticket

Docker-Compose

Both tasks - frontend and SQL backend - can be combined in a single docker-compose.yml file:

version: '3.8'
services:

  osticket-app:
    image: osticket/osticket:latest
    container_name: osticket
    volumes:
      - type: bind
        source: ./src/include/i18n/de.phar
        target: /var/www/src/public/include/i18n/de.phar
        read_only: true
    environment:
      - CONTAINER_NAME=osticket
      - MYSQL_USER=osticket
      - MYSQL_HOST=osticket-db
      - MYSQL_PASSWORD=secret
      - MYSQL_DATABASE=osticket
    ports:
      - 8080:80
    depends_on:
      - osticket-db
    networks:
      - services
    links:
      - osticket-db
    restart: unless-stopped

  osticket-db:
    image: mariadb:latest
    container_name: osticket-db
    volumes:
      - /opt/osticket/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_USER=osticket
      - MYSQL_PASSWORD=secret
      - MYSQL_DATABASE=osticket
      - CONTAINER_NAME=osticket-db
    networks:
      - services
    restart: unless-stopped

networks:
  services:
    external: false

Hashicorp Nomad & Consul

job "osticket" {
  datacenters = ["mydatacenter"]
    group "osticket" {
        
        network {
            mode = "host"
            port "tcp" {
                static = 3306
            }
            port "http" {
                static = 8080
            }
        }

        update {
            max_parallel = 1
            min_healthy_time  = "10s"
            healthy_deadline  = "5m"
            progress_deadline = "10m"
            auto_revert = true
            auto_promote = true
            canary = 1
        }

        volume "osticket_db" {
            type      = "host"
            read_only = false
            source    = "osticket_db"
        }

        restart {
            attempts = 10
            interval = "5m"
            delay    = "25s"
            mode     = "delay"
        }

        service {
            name = "osticket-db"
            port = "tcp"
            tags = [
                "database"
            ]

            check {
                name     = "DB Health"
                port     = "tcp"
                type     = "tcp"
                interval = "30s"
                timeout  = "4s"
            }
        }

        service {
            name = "osticket-frontend"
            port = "http"
            tags = [
                "frontend"
            ]

            check {
                name     = "HTTP Health"
                path     = "/"
                type     = "http"
                protocol = "http"
                interval = "10s"
                timeout  = "2s"
            }
        }

        task "osticket-db" {
            driver = "docker"

            config {
                image = "mariadb:latest"
                ports = ["tcp"]
                network_mode = "host"
                force_pull = false
            }

            volume_mount {
                volume      = "osticket_db"
                destination = "/var/lib/mysql" #<-- in the container
                read_only   = false
            }

            env {
                MYSQL_ROOT_PASSWORD = "secret"
                MYSQL_USER = "osticket"
                MYSQL_PASSWORD = "secret"
                MYSQL_DATABASE = "osticket"
                CONTAINER_NAME = "127.0.0.1"
            }
        }

        task "osticket-frontend" {
            driver = "docker"

            config {
                image = "my.gitlab.com:12345/osticket-docker:latest"
                ports = ["http"]
                network_mode = "host"
                force_pull = false

                auth {
                    username = "mygitlabuser"
                    password = "asecretpassword"
                }
            }

            env {
                MYSQL_USER = "osticket"
                MYSQL_HOST = "127.0.0.1"
                MYSQL_PASSWORD = "secret"
                MYSQL_DATABASE = "osticket"
            }
        }
    }
}

osticket-nomad's People

Contributors

mpolinowski avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

heartshare

osticket-nomad's Issues

docker-compose not working anymore

start mysql

docker run --name osticket_mysql -d -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_USER=osticket -e MYSQL_PASSWORD=secret -e MYSQL_DATABASE=osticket mariadb:latest

start osticket

docker run --name osticket -d --link osticket_mysql:mysql -p 86:80 osticket/osticket

and then docker logs show some error

Install/Update osTicket
PHP Notice:  Constant INCLUDE_DIR already defined in /var/www/src/bootstrap.php on line 339
PHP Notice:  Constant SETUP_DIR already defined in /var/www/src/bootstrap.php on line 341
Configuring mail settings
OSTicket cron job is set to run every 5 minutes
Using linked MySQL container
Waiting for database TCP connection to become available...
Connecting to database mysql://osticket@mysql/osticket
Loading installation secret
Updating configuration file
Installing database. Please wait...
PHP Parse error:  syntax error, unexpected '=' in /var/www/src/public/include/class.forms.php on line 4039

Parse error: syntax error, unexpected '=' in /var/www/src/public/include/class.forms.php on line 4039

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.