Sari la conținut

Docker Compose

Instalați platforma pe un singur gazdă cu definiția oficială Docker Compose, acoperind secretele,TLS, backup-uri, upgrade-uri și pași de depanare.

Repozitorul platformei include o definiție Compose care rulează platforma, PostgreSQL, SeaweedFS și Chrome fără cap pe un singur gazdă.

Pentru sarcinile de lucru care necesită scalare independentă, servicii de date gestionate sau actualizări rulante, utilizați Kubernetes deployment.

  • Un gazdă Linux cu Docker Engine și Docker Compose v2
  • O înregistrare DNS pentru numele de gazdă pe care îl veți utiliza
  • A TLS-terminating reverse proxy or load balancer
  • Un relay SMTP dacă doriți ca platforma să trimită e-mailuri
  • Memorie suficientă pentru platformă și dependențele sale; numai configurația PostgreSQL furnizată necesită 4 GB de bufferuri partajate
  1. Clone the repository

    Terminal window
    git clone https://github.com/getprobo/probo.git
    cd probo

    Păstrați compose.prod.yaml și directorul compose/ împreună. Definiția compusă montă scriptul de inițializare PostgreSQL și configurația SeaweedFS din acel director.

  2. Generate application secrets

    Terminal window
    umask 077
    openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 \
    -out oauth2-signing-key.pem
    export PROBOD_ENCRYPTION_KEY="$(openssl rand -base64 32)"
    export PROBOD_AUTH_COOKIE_SECRET="$(openssl rand -base64 32)"
    export PROBOD_AUTH_PASSWORD_PEPPER="$(openssl rand -base64 32)"
    export PROBOD_TRUST_AUTH_TOKEN_SECRET="$(openssl rand -base64 32)"

    Modificarea secretelor de criptare, semnare sau autentificare după existența utilizatorilor și a datelor poate invalida sesiunile sau poate face inaccesibile datele stocate.

  3. Create the environment file

    Înlocuiți probo.example.com și valorile SMTP, apoi rulați:

    Terminal window
    cat > .env <<EOF
    PROBOD_ENCRYPTION_KEY=${PROBOD_ENCRYPTION_KEY}
    PROBOD_AUTH_COOKIE_SECRET=${PROBOD_AUTH_COOKIE_SECRET}
    PROBOD_AUTH_PASSWORD_PEPPER=${PROBOD_AUTH_PASSWORD_PEPPER}
    PROBOD_TRUST_AUTH_TOKEN_SECRET=${PROBOD_TRUST_AUTH_TOKEN_SECRET}
    PROBOD_BASE_URL=https://probo.example.com
    PROBOD_API_ADDR=0.0.0.0:8080
    PROBOD_API_CORS_ALLOWED_ORIGINS=https://probo.example.com
    PROBOD_SMTP_ADDR=smtp.example.com:587
    PROBOD_SMTP_USER=replace-with-smtp-user
    PROBOD_SMTP_PASSWORD=replace-with-smtp-password
    PROBOD_SMTP_TLS_REQUIRED=true
    PROBOD_MAILER_SENDER_EMAIL=no-reply@example.com
    EOF
    Terminal window
    chmod 600 .env oauth2-signing-key.pem
  4. Add the required OAuth signing key

    Curentul compose.prod.yaml nu trece cheia de semnătură OAuth pe platformă. Creați compose.local.yaml:

    services:
    probo:
    environment:
    PROBOD_OAUTH2_SERVER_SIGNING_KEY: ${PROBOD_OAUTH2_SERVER_SIGNING_KEY}
    PROBOD_SMTP_ADDR: ${PROBOD_SMTP_ADDR}
    PROBOD_SMTP_USER: ${PROBOD_SMTP_USER}
    PROBOD_SMTP_PASSWORD: ${PROBOD_SMTP_PASSWORD}
    PROBOD_SMTP_TLS_REQUIRED: ${PROBOD_SMTP_TLS_REQUIRED}
    PROBOD_MAILER_SENDER_EMAIL: ${PROBOD_MAILER_SENDER_EMAIL}

    Exportați cheia înainte de fiecare comandă Compoziți:

    Terminal window
    export PROBOD_OAUTH2_SERVER_SIGNING_KEY="$(cat oauth2-signing-key.pem)"
  5. Review the rendered configuration

    Terminal window
    docker compose \
    -f compose.prod.yaml \
    -f compose.local.yaml \
    config

    Nu continuați dacă o valoare cerută este goală. ieșirea renderată conține secrete, deci nu o salvați sau nu o partajați.

  6. Începeți serviciile

    Terminal window
    docker compose \
    -f compose.prod.yaml \
    -f compose.local.yaml \
    up -d
  7. Verify startup

    Terminal window
    docker compose \
    -f compose.prod.yaml \
    -f compose.local.yaml \
    ps
    docker compose \
    -f compose.prod.yaml \
    -f compose.local.yaml \
    logs --tail=100 probo
    curl --fail http://127.0.0.1:8080/

    Un răspuns HTTP reușit și un serviciu funcțional probo confirmă faptul că aplicația este accesibilă. De asemenea, testați autentificarea, încărcarea fișierelor și livrarea de e-mail înainte de a invita utilizatorii.

OprițiTLSla un proxy invers sau la un balancier de încărcare și trimiteți solicitările către portul 8080. Păstrați titlurile originale ___ZBT_I18N_RUNTIME_BLOCK_188__, X-Forwarded-For și X-Forwarded-Proto.

Definiția Compose furnizată publică platforma, porturile PostgreSQL, SeaweedFS și Chrome pe fiecare interfață gazdă.

  • restrângerea traficului de intrare cu gazda sau firewall-ul cloud;
  • expuneți numai porturile ___ZBT_I18N_RUNTIME_BLOCK_191__ și ___ZBT_I18N_RUNTIME_BLOCK_192__ prin intermediul proxy-ului invers;
  • Pentru a preveni accesul extern la porturile 5432, 8080, 8081, 8333, 8443, 9222 și 9333;
  • înlocuiți credențialele PostgreSQL și SeaweedFS combinate sau utilizați servicii gestionate externe;
  • Așezați imaginea platformei într-o versiune testată în loc de latest.

Montajul unui certificat în containerul platformei nu configureazăTLSîn sine.

Magazinele de implementare sunt prezentate în trei volume numite:

  • probo-data pentru datele locale ale platformei;
  • postgres-data for PostgreSQL;
  • seaweedfs-data pentru stocarea obiectelor.

Backup PostgreSQL și SeaweedFS ca un singur punct de recuperare. un dump de baze de date fără obiectele sale corespunzătoare poate lăsa înregistrări document ale căror fișiere nu pot fi restaurate.

Create a database dump with:

Terminal window
docker compose \
-f compose.prod.yaml \
-f compose.local.yaml \
exec -T postgres \
pg_dump -U postgres -d probod --format=custom > probod.dump

Utilizați un instrument de backup conștient de volum sau o captură instantanee de stocare pentru SeaweedFS. Opriți scrierea în timp ce faceți o backup de volum offline și testați restaurarea pe un alt gazdă. Copiați .env, oauth2-signing-key.pem și orice configurație proxy în sistemul de backup criptat separat.

Citiți notele de lansare și faceți mai întâi o copie de rezervă testată, apoi trageți și recreați containerele:

Terminal window
export PROBOD_OAUTH2_SERVER_SIGNING_KEY="$(cat oauth2-signing-key.pem)"
docker compose \
-f compose.prod.yaml \
-f compose.local.yaml \
pull
docker compose \
-f compose.prod.yaml \
-f compose.local.yaml \
up -d

Verificați jurnalele platformei și repetați verificările funcționale utilizate în timpul instalării.Migrările bazei de date se execută atunci când se pornește platforma; nu întrerupeți pornirea în timp ce se execută o migrare.

Terminal window
docker compose \
-f compose.prod.yaml \
-f compose.local.yaml \
logs --tail=200 probo

Dacă jurnalele raportează o lipsă PROBOD_OAUTH2_SERVER_SIGNING_KEY, confirmați că cheia este exportată în shell-ul curent și că ambele fișiere Compoziți sunt incluse în comandă.

Terminal window
docker compose \
-f compose.prod.yaml \
-f compose.local.yaml \
logs --tail=200 postgres
docker compose \
-f compose.prod.yaml \
-f compose.local.yaml \
exec postgres pg_isready -U postgres -d probod

Setările PostgreSQL furnizate necesită mult mai mult de 4 GB de memorie totală de gazdă. Dacă PostgreSQL este ucis de kernel, creșteți memoria gazdă sau revizuiți configurația acesteia înainte de a reduce limitele.

Verificați jurnalele de platformă, SeaweedFS și Chrome:

Terminal window
docker compose \
-f compose.prod.yaml \
-f compose.local.yaml \
logs --tail=200 probo seaweedfs chrome

See the environment variable reference atunci când se adaugă integrări opționale sau se modifică comportamentul runtime-ului.

Ultima actualizare: