gorm Docker & Self-Hosted Deployment

GitHub

The fantastic ORM library for Golang, aims to be developer friendly

39,981 stars Go Go 2 files ยท ~420 tokens #go#golang#gorm#orm#web
RAW Compose
1. Pull Image (DOCKERHUB) docker pull library/mysql
2. Docker Run (1-Click Launch) docker run -d --name gorm -p 9910:9910 --restart always mysql:latest
3. Podman Run podman run -d --name gorm -p 9910:9910 --restart always mysql:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/library/mysql:latest
5. ORAS Pull (OCI Artifact) oras pull mysql:latest
6. Compose Deployment docker compose up -d
tests/compose.yml
Download .yml
services:
  mysql:
    image: 'mysql:latest'
    ports:
      - "127.0.0.1:9910:3306"
    environment:
      - MYSQL_DATABASE=gorm
      - MYSQL_USER=gorm
      - MYSQL_PASSWORD=gorm
      - MYSQL_RANDOM_ROOT_PASSWORD="yes"
  postgres:
    image: 'postgres:latest'
    ports:
      - "127.0.0.1:9920:5432"
    environment:
      - TZ=Asia/Shanghai
      - POSTGRES_DB=gorm
      - POSTGRES_USER=gorm
      - POSTGRES_PASSWORD=gorm
  mssql:
    image: '${MSSQL_IMAGE}:latest'
    ports:
      - "127.0.0.1:9930:1433"
    environment:
      - TZ=Asia/Shanghai
      - ACCEPT_EULA=Y
      - MSSQL_SA_PASSWORD=LoremIpsum86
  tidb:
    image: 'pingcap/tidb:v6.5.0'
    ports:
      - "127.0.0.1:9940:4000"
    command: /tidb-server -store unistore -path "" -lease 0s > tidb.log 2>&1 &
  gaussdb:
    image: 'opengauss/opengauss:7.0.0-RC1.B023'
    hostname: opengauss-server
    ports:
      - "127.0.0.1:9950:5432"
    environment:
      - TZ=Asia/Shanghai
      - GS_PASSWORD=Gaussdb@123
      - GS_CLUSTER_NAME=opengauss_cluster
      - PGDATA=/var/lib/opengauss/data
    entrypoint: ""
    command: |-
      /bin/sh -c 'set -euo pipefail;
      /usr/local/bin/entrypoint.sh gaussdb &
      counter=1;
      while [ "$$counter" -le 20 ]; do
        if su - omm -c "gsql -U omm -d postgres -c \"SELECT 1;\""; then
          echo "Creating database gorm...";
          su - omm -c "gsql -U omm -d postgres -c \"CREATE DATABASE gorm DBCOMPATIBILITY '\'PG\'';\"";
          echo "Database initialized successfully";
          break;
        fi;
        echo "Waiting for database to be ready... ($$counter/12)";
        sleep 5;
        counter=$$(($$counter + 1));
      done;
      # timeout handling
      if [ $$counter -gt 20 ]; then
        echo "Error: Database failed to start within timeout";
        exit 1;
      fi;
      # keep the container running: wait for the database process in the foreground
      wait
      '