Migrate from pgAdmin to Adminer (#692)

This commit is contained in:
Sebastián Ramírez
2024-03-12 18:30:54 +01:00
committed by GitHub
parent 237c5a31c8
commit 37a6e350d1
10 changed files with 19 additions and 47 deletions

5
.env
View File

@@ -31,11 +31,6 @@ POSTGRES_DB=app
POSTGRES_USER=postgres POSTGRES_USER=postgres
POSTGRES_PASSWORD=changethis POSTGRES_PASSWORD=changethis
# PgAdmin
PGADMIN_DEFAULT_EMAIL=admin@example.com
PGADMIN_DEFAULT_PASSWORD=changethis
PGADMIN_LISTEN_PORT=5050
SENTRY_DSN= SENTRY_DSN=
# Flower # Flower

View File

@@ -21,8 +21,6 @@ jobs:
SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }} SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }}
EMAILS_FROM_EMAIL: ${{ secrets.EMAILS_FROM_EMAIL }} EMAILS_FROM_EMAIL: ${{ secrets.EMAILS_FROM_EMAIL }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
PGADMIN_DEFAULT_EMAIL: ${{ secrets.PGADMIN_DEFAULT_EMAIL }}
PGADMIN_DEFAULT_PASSWORD: ${{ secrets.PGADMIN_DEFAULT_PASSWORD }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
FLOWER_BASIC_AUTH: ${{ secrets.FLOWER_BASIC_AUTH }} FLOWER_BASIC_AUTH: ${{ secrets.FLOWER_BASIC_AUTH }}
steps: steps:

View File

@@ -21,8 +21,6 @@ jobs:
SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }} SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }}
EMAILS_FROM_EMAIL: ${{ secrets.EMAILS_FROM_EMAIL }} EMAILS_FROM_EMAIL: ${{ secrets.EMAILS_FROM_EMAIL }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
PGADMIN_DEFAULT_EMAIL: ${{ secrets.PGADMIN_DEFAULT_EMAIL }}
PGADMIN_DEFAULT_PASSWORD: ${{ secrets.PGADMIN_DEFAULT_PASSWORD }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
FLOWER_BASIC_AUTH: ${{ secrets.FLOWER_BASIC_AUTH }} FLOWER_BASIC_AUTH: ${{ secrets.FLOWER_BASIC_AUTH }}
steps: steps:

View File

@@ -154,8 +154,6 @@ The input variables, with their default values (some auto generated) are:
- `smtp_password`: (default: "") The SMTP server password to send emails, you can set it later in .env. - `smtp_password`: (default: "") The SMTP server password to send emails, you can set it later in .env.
- `emails_from_email`: (default: `"info@example.com"`) The email account to send emails from, you can set it later in .env. - `emails_from_email`: (default: `"info@example.com"`) The email account to send emails from, you can set it later in .env.
- `postgres_password`: (default: `"changethis"`) The password for the PostgreSQL database, stored in .env, you can generate one with the method above. - `postgres_password`: (default: `"changethis"`) The password for the PostgreSQL database, stored in .env, you can generate one with the method above.
- `pgadmin_default_user`: (default: `"admin"`) The default user for pgAdmin, you can set it later in .env.
- `pgadmin_default_password`: (default: `"changethis"`) The default user password for pgAdmin, stored in .env.
- `sentry_dsn`: (default: "") The DSN for Sentry, if you are using it, you can set it later in .env. - `sentry_dsn`: (default: "") The DSN for Sentry, if you are using it, you can set it later in .env.
- `flower_basic_auth`: (default: `"admin:changethis"`) The basic auth for Flower, you can set it later in .env. - `flower_basic_auth`: (default: `"admin:changethis"`) The basic auth for Flower, you can set it later in .env.

View File

@@ -21,7 +21,7 @@ Backend, JSON based web API based on OpenAPI: http://localhost/api/
Automatic interactive documentation with Swagger UI (from the OpenAPI backend): http://localhost/docs Automatic interactive documentation with Swagger UI (from the OpenAPI backend): http://localhost/docs
PGAdmin, PostgreSQL web administration: http://localhost:5050 Adminer, database web administration: http://localhost:8080
Flower, administration of Celery tasks: http://localhost:5555 Flower, administration of Celery tasks: http://localhost:5555

View File

@@ -54,16 +54,6 @@ postgres_password:
python -c "import secrets; print(secrets.token_urlsafe(32))"' python -c "import secrets; print(secrets.token_urlsafe(32))"'
default: changethis default: changethis
pgadmin_default_email:
type: str
help: The default user email for pgAdmin, you can set it later in .env
default: admin@example.com
pgadmin_default_password:
type: str
help: The default user password for pgAdmin, stored in .env
default: changethis
sentry_dsn: sentry_dsn:
type: str type: str
help: The DSN for Sentry, if you are using it, you can set it later in .env help: The DSN for Sentry, if you are using it, you can set it later in .env

View File

@@ -12,7 +12,7 @@ But you have to configure a couple things first. 🤓
* Have a remote server ready and available. * Have a remote server ready and available.
* Configure the DNS records of your domain to point to the IP of the server you just created. * Configure the DNS records of your domain to point to the IP of the server you just created.
* Configure a wildcard subdomain for your domain, so that you can have multiple subdomains for different services, e.g. `*.fastapi-project.example.com`. This will be useful for accessing different components, like `traefik.fastapi-project.example.com`, `pgadmin.fastapi-project.example.com`, etc. And also for `staging`, like `staging.fastapi-project.example.com`, `staging.pgadmin.fastapi-project.example.com`, etc. * Configure a wildcard subdomain for your domain, so that you can have multiple subdomains for different services, e.g. `*.fastapi-project.example.com`. This will be useful for accessing different components, like `traefik.fastapi-project.example.com`, `adminer.fastapi-project.example.com`, etc. And also for `staging`, like `staging.fastapi-project.example.com`, `staging.adminer.fastapi-project.example.com`, etc.
* Install and configure [Docker](https://docs.docker.com/engine/install/) on the remote server (Docker Engine, not Docker Desktop). * Install and configure [Docker](https://docs.docker.com/engine/install/) on the remote server (Docker Engine, not Docker Desktop).
## Public Traefik ## Public Traefik
@@ -141,8 +141,6 @@ You can set several variables, like:
* `POSTGRES_PASSWORD`: The Postgres password. * `POSTGRES_PASSWORD`: The Postgres password.
* `POSTGRES_USER`: The Postgres user, you can leave the default. * `POSTGRES_USER`: The Postgres user, you can leave the default.
* `POSTGRES_DB`: The database name to use for this application. You can leave the default of `app`. * `POSTGRES_DB`: The database name to use for this application. You can leave the default of `app`.
* `PGADMIN_DEFAULT_EMAIL`: The default email for pgAdmin.
* `PGADMIN_DEFAULT_PASSWORD`: The default password for pgAdmin.
* `SENTRY_DSN`: The DSN for Sentry, if you are using it. * `SENTRY_DSN`: The DSN for Sentry, if you are using it.
* `FLOWER_BASIC_AUTH`: The HTTP Basic Auth for Flower, like `admin:changethis`. * `FLOWER_BASIC_AUTH`: The HTTP Basic Auth for Flower, like `admin:changethis`.
@@ -253,8 +251,6 @@ The current Github Actions workflows expect these secrets:
* `EMAILS_FROM_EMAIL` * `EMAILS_FROM_EMAIL`
* `FIRST_SUPERUSER` * `FIRST_SUPERUSER`
* `FIRST_SUPERUSER_PASSWORD` * `FIRST_SUPERUSER_PASSWORD`
* `PGADMIN_DEFAULT_EMAIL`
* `PGADMIN_DEFAULT_PASSWORD`
* `POSTGRES_PASSWORD` * `POSTGRES_PASSWORD`
* `SECRET_KEY` * `SECRET_KEY`
@@ -283,7 +279,7 @@ Backend API docs: `https://fastapi-project.example.com/docs`
Backend API base URL: `https://fastapi-project.example.com/api/` Backend API base URL: `https://fastapi-project.example.com/api/`
PGAdmin: `https://pgadmin.fastapi-project.example.com` Adminer: `https://adminer.fastapi-project.example.com`
Flower: `https://flower.fastapi-project.example.com` Flower: `https://flower.fastapi-project.example.com`
@@ -295,6 +291,6 @@ Backend API docs: `https://staging.fastapi-project.example.com/docs`
Backend API base URL: `https://staging.fastapi-project.example.com/api/` Backend API base URL: `https://staging.fastapi-project.example.com/api/`
PGAdmin: `https://staging.pgadmin.fastapi-project.example.com` Adminer: `https://staging.adminer.fastapi-project.example.com`
Flower: `https://staging.flower.fastapi-project.example.com` Flower: `https://staging.flower.fastapi-project.example.com`

View File

@@ -107,7 +107,7 @@ Automatic Interactive Docs (Swagger UI): https://localhost/docs
Automatic Alternative Docs (ReDoc): https://localhost/redoc Automatic Alternative Docs (ReDoc): https://localhost/redoc
PGAdmin: http://localhost:5050 Adminer: http://localhost:8080
Flower: http://localhost:5555 Flower: http://localhost:5555
@@ -125,7 +125,7 @@ Automatic Interactive Docs (Swagger UI): https://localhost.tiangolo.com/docs
Automatic Alternative Docs (ReDoc): https://localhost.tiangolo.com/redoc Automatic Alternative Docs (ReDoc): https://localhost.tiangolo.com/redoc
PGAdmin: http://localhost.tiangolo.com:5050 Adminer: http://localhost.tiangolo.com:8080
Flower: http://localhost.tiangolo.com:5555 Flower: http://localhost.tiangolo.com:5555

View File

@@ -43,10 +43,10 @@ services:
ports: ports:
- "5432:5432" - "5432:5432"
pgadmin: adminer:
restart: "no" restart: "no"
ports: ports:
- "5050:5050" - "8080:8080"
queue: queue:
restart: "no" restart: "no"

View File

@@ -13,31 +13,28 @@ services:
- POSTGRES_USER=${POSTGRES_USER?Variable not set} - POSTGRES_USER=${POSTGRES_USER?Variable not set}
- POSTGRES_DB=${POSTGRES_DB?Variable not set} - POSTGRES_DB=${POSTGRES_DB?Variable not set}
pgadmin: adminer:
image: dpage/pgadmin4 image: adminer
restart: always restart: always
networks: networks:
- traefik-public - traefik-public
- default - default
depends_on: depends_on:
- db - db
env_file:
- .env
environment: environment:
- PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL} - ADMINER_DESIGN=pepa-linha-dark
- PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}
labels: labels:
- traefik.enable=true - traefik.enable=true
- traefik.docker.network=traefik-public - traefik.docker.network=traefik-public
- traefik.constraint-label=traefik-public - traefik.constraint-label=traefik-public
- traefik.http.routers.${STACK_NAME?Variable not set}-pgadmin-http.rule=Host(`pgadmin.${DOMAIN?Variable not set}`) - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-http.rule=Host(`adminer.${DOMAIN?Variable not set}`)
- traefik.http.routers.${STACK_NAME?Variable not set}-pgadmin-http.entrypoints=http - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-http.entrypoints=http
- traefik.http.routers.${STACK_NAME?Variable not set}-pgadmin-http.middlewares=https-redirect - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-http.middlewares=https-redirect
- traefik.http.routers.${STACK_NAME?Variable not set}-pgadmin-https.rule=Host(`pgadmin.${DOMAIN?Variable not set}`) - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.rule=Host(`adminer.${DOMAIN?Variable not set}`)
- traefik.http.routers.${STACK_NAME?Variable not set}-pgadmin-https.entrypoints=https - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.entrypoints=https
- traefik.http.routers.${STACK_NAME?Variable not set}-pgadmin-https.tls=true - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.tls=true
- traefik.http.routers.${STACK_NAME?Variable not set}-pgadmin-https.tls.certresolver=le - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.tls.certresolver=le
- traefik.http.services.${STACK_NAME?Variable not set}-pgadmin.loadbalancer.server.port=5050 - traefik.http.services.${STACK_NAME?Variable not set}-adminer.loadbalancer.server.port=8080
queue: queue:
image: rabbitmq:3 image: rabbitmq:3