diff --git a/.env b/.env index 7e47048..6b94671 100644 --- a/.env +++ b/.env @@ -31,11 +31,6 @@ POSTGRES_DB=app POSTGRES_USER=postgres POSTGRES_PASSWORD=changethis -# PgAdmin -PGADMIN_DEFAULT_EMAIL=admin@example.com -PGADMIN_DEFAULT_PASSWORD=changethis -PGADMIN_LISTEN_PORT=5050 - SENTRY_DSN= # Flower diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml index dd8303a..13ab1c5 100644 --- a/.github/workflows/deploy-production.yml +++ b/.github/workflows/deploy-production.yml @@ -21,8 +21,6 @@ jobs: SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }} EMAILS_FROM_EMAIL: ${{ secrets.EMAILS_FROM_EMAIL }} POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} - PGADMIN_DEFAULT_EMAIL: ${{ secrets.PGADMIN_DEFAULT_EMAIL }} - PGADMIN_DEFAULT_PASSWORD: ${{ secrets.PGADMIN_DEFAULT_PASSWORD }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }} FLOWER_BASIC_AUTH: ${{ secrets.FLOWER_BASIC_AUTH }} steps: diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml index c476dda..069f038 100644 --- a/.github/workflows/deploy-staging.yml +++ b/.github/workflows/deploy-staging.yml @@ -21,8 +21,6 @@ jobs: SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }} EMAILS_FROM_EMAIL: ${{ secrets.EMAILS_FROM_EMAIL }} POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} - PGADMIN_DEFAULT_EMAIL: ${{ secrets.PGADMIN_DEFAULT_EMAIL }} - PGADMIN_DEFAULT_PASSWORD: ${{ secrets.PGADMIN_DEFAULT_PASSWORD }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }} FLOWER_BASIC_AUTH: ${{ secrets.FLOWER_BASIC_AUTH }} steps: diff --git a/README.md b/README.md index cb5b171..89a275c 100644 --- a/README.md +++ b/README.md @@ -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. - `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. -- `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. - `flower_basic_auth`: (default: `"admin:changethis"`) The basic auth for Flower, you can set it later in .env. diff --git a/backend/README.md b/backend/README.md index ad37dec..f603c00 100644 --- a/backend/README.md +++ b/backend/README.md @@ -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 -PGAdmin, PostgreSQL web administration: http://localhost:5050 +Adminer, database web administration: http://localhost:8080 Flower, administration of Celery tasks: http://localhost:5555 diff --git a/copier.yml b/copier.yml index 7ea135d..204a0bf 100644 --- a/copier.yml +++ b/copier.yml @@ -54,16 +54,6 @@ postgres_password: python -c "import secrets; print(secrets.token_urlsafe(32))"' 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: type: str help: The DSN for Sentry, if you are using it, you can set it later in .env diff --git a/deployment.md b/deployment.md index 4ea39eb..e16bcbc 100644 --- a/deployment.md +++ b/deployment.md @@ -12,7 +12,7 @@ But you have to configure a couple things first. 🤓 * 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 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). ## Public Traefik @@ -141,8 +141,6 @@ You can set several variables, like: * `POSTGRES_PASSWORD`: The Postgres password. * `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`. -* `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. * `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` * `FIRST_SUPERUSER` * `FIRST_SUPERUSER_PASSWORD` -* `PGADMIN_DEFAULT_EMAIL` -* `PGADMIN_DEFAULT_PASSWORD` * `POSTGRES_PASSWORD` * `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/` -PGAdmin: `https://pgadmin.fastapi-project.example.com` +Adminer: `https://adminer.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/` -PGAdmin: `https://staging.pgadmin.fastapi-project.example.com` +Adminer: `https://staging.adminer.fastapi-project.example.com` Flower: `https://staging.flower.fastapi-project.example.com` diff --git a/development.md b/development.md index ad76dc1..0c69714 100644 --- a/development.md +++ b/development.md @@ -107,7 +107,7 @@ Automatic Interactive Docs (Swagger UI): https://localhost/docs Automatic Alternative Docs (ReDoc): https://localhost/redoc -PGAdmin: http://localhost:5050 +Adminer: http://localhost:8080 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 -PGAdmin: http://localhost.tiangolo.com:5050 +Adminer: http://localhost.tiangolo.com:8080 Flower: http://localhost.tiangolo.com:5555 diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 12917aa..5e04c58 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -43,10 +43,10 @@ services: ports: - "5432:5432" - pgadmin: + adminer: restart: "no" ports: - - "5050:5050" + - "8080:8080" queue: restart: "no" diff --git a/docker-compose.yml b/docker-compose.yml index fe3eab3..03f43f5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,31 +13,28 @@ services: - POSTGRES_USER=${POSTGRES_USER?Variable not set} - POSTGRES_DB=${POSTGRES_DB?Variable not set} - pgadmin: - image: dpage/pgadmin4 + adminer: + image: adminer restart: always networks: - traefik-public - default depends_on: - db - env_file: - - .env environment: - - PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL} - - PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD} + - ADMINER_DESIGN=pepa-linha-dark labels: - traefik.enable=true - traefik.docker.network=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}-pgadmin-http.entrypoints=http - - traefik.http.routers.${STACK_NAME?Variable not set}-pgadmin-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}-pgadmin-https.entrypoints=https - - traefik.http.routers.${STACK_NAME?Variable not set}-pgadmin-https.tls=true - - traefik.http.routers.${STACK_NAME?Variable not set}-pgadmin-https.tls.certresolver=le - - traefik.http.services.${STACK_NAME?Variable not set}-pgadmin.loadbalancer.server.port=5050 + - 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}-adminer-http.entrypoints=http + - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-http.middlewares=https-redirect + - 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}-adminer-https.entrypoints=https + - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.tls=true + - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.tls.certresolver=le + - traefik.http.services.${STACK_NAME?Variable not set}-adminer.loadbalancer.server.port=8080 queue: image: rabbitmq:3