✨ Migrate from pgAdmin to Adminer (#692)
This commit is contained in:

committed by
GitHub

parent
237c5a31c8
commit
37a6e350d1
5
.env
5
.env
@@ -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
|
||||||
|
2
.github/workflows/deploy-production.yml
vendored
2
.github/workflows/deploy-production.yml
vendored
@@ -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:
|
||||||
|
2
.github/workflows/deploy-staging.yml
vendored
2
.github/workflows/deploy-staging.yml
vendored
@@ -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:
|
||||||
|
@@ -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.
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
10
copier.yml
10
copier.yml
@@ -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
|
||||||
|
@@ -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`
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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"
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user