diff --git a/.ddev/addon-metadata/adminer/manifest.yaml b/.ddev/addon-metadata/adminer/manifest.yaml new file mode 100644 index 0000000..eb3878e --- /dev/null +++ b/.ddev/addon-metadata/adminer/manifest.yaml @@ -0,0 +1,10 @@ +name: adminer +repository: ddev/ddev-adminer +version: v1.3.1 +install_date: "2026-04-18T22:49:23+02:00" +project_files: + - docker-compose.adminer.yaml + - docker-compose.adminer_norouter.yaml + - commands/host/adminer +global_files: [] +removal_actions: [] diff --git a/.ddev/commands/host/adminer b/.ddev/commands/host/adminer new file mode 100755 index 0000000..37f9de6 --- /dev/null +++ b/.ddev/commands/host/adminer @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +## #ddev-generated: If you want to edit and own this file, remove this line. +## Description: Launch a browser with Adminer +## Usage: adminer +## Example: "ddev adminer" + +DDEV_ADMINER_PORT=9100 +DDEV_ADMINER_HTTPS_PORT=9101 + +if [ ${DDEV_PRIMARY_URL%://*} = "http" ] || [ -n "${GITPOD_WORKSPACE_ID:-}" ] || [ "${CODESPACES:-}" = "true" ]; then + ddev launch :$DDEV_ADMINER_PORT +else + ddev launch :$DDEV_ADMINER_HTTPS_PORT +fi diff --git a/.ddev/docker-compose.adminer.yaml b/.ddev/docker-compose.adminer.yaml new file mode 100644 index 0000000..d8a6278 --- /dev/null +++ b/.ddev/docker-compose.adminer.yaml @@ -0,0 +1,138 @@ +#ddev-generated +services: + adminer: + container_name: ddev-${DDEV_SITENAME}-adminer + image: ${ADMINER_DOCKER_IMAGE:-adminer:standalone}-${DDEV_SITENAME}-built + build: + dockerfile_inline: | + ARG ADMINER_DOCKER_IMAGE="scratch" + FROM $$ADMINER_DOCKER_IMAGE + + # Switch the adminer user. + USER root + # Accept build arguments for user creation + ARG username + ARG uid + ARG gid + # Free up the uid and gid if they're currently used, but ensure the original adminer group still exists + RUN existing_user=$(getent passwd "$$uid" | cut -d: -f1); \ + existing_group=$(getent group "$$gid" | cut -d: -f1); \ + existing_adminer_gid=$(getent group adminer | cut -d: -f3); \ + if [[ -n "$$existing_group" ]]; then echo "Deleting existing group: $$existing_group ($$gid)"; delgroup "$$existing_group"; fi; \ + if [[ -n "$$existing_user" ]]; then echo "Deleting existing user: $$existing_user ($$uid)"; deluser "$$existing_user"; fi; \ + addgroup -g "$$existing_adminer_gid" adminer || addgroup adminer || true + # Ensure tty group exists + RUN getent group tty || addgroup tty + # Create group and user, trying multiple methods for compatibility + RUN (addgroup -g "$$gid" "$$username" || addgroup "$$username" || true) && \ + (adduser -G tty -s "/bin/sh" -D -u "$$uid" "$$username" || \ + adduser -G tty -s "/bin/sh" -D "$$username" || \ + adduser -G tty -s "/bin/sh" "$$username") && \ + addgroup "$$username" adminer + # Ensure the plugins-enabled directory is writable by the group. + RUN chmod 775 /var/www/html/plugins-enabled + # Switch to the created user + USER "$$username" + args: + ADMINER_DOCKER_IMAGE: ${ADMINER_DOCKER_IMAGE:-adminer:standalone} + username: ${DDEV_USER} + uid: ${DDEV_UID} + gid: ${DDEV_GID} + environment: + - ADMINER_DEFAULT_DRIVER=${ADMINER_DEFAULT_DRIVER:-${DDEV_DATABASE_FAMILY:-server}} + - ADMINER_DEFAULT_SERVER=${ADMINER_DEFAULT_SERVER:-db} + - ADMINER_DEFAULT_DB=${ADMINER_DEFAULT_DB:-db} + - ADMINER_DEFAULT_USERNAME=${ADMINER_DEFAULT_USERNAME:-db} + - ADMINER_DEFAULT_PASSWORD=${ADMINER_DEFAULT_PASSWORD:-db} + - ADMINER_PLUGINS=${ADMINER_PLUGINS:-ddev-passwordless-login tables-filter} + - ADMINER_DESIGN=${ADMINER_DESIGN:-} + - VIRTUAL_HOST=$DDEV_HOSTNAME + - HTTP_EXPOSE=9100:8080 + - HTTPS_EXPOSE=9101:8080 + labels: + com.ddev.site-name: ${DDEV_SITENAME} + com.ddev.approot: $DDEV_APPROOT + volumes: + - ".:/mnt/ddev_config" + - "../:/mnt/ddev_app" + - "ddev-global-cache:/mnt/ddev-global-cache" + depends_on: + - db + command: ["php", "-S", "[::]:8080", "-t", "/var/www/html", "ddev-adminer.php"] + configs: + - source: ddev-adminer.php + target: /var/www/html/ddev-adminer.php + mode: "0444" + - source: ddev-passwordless-login.php + target: /var/www/html/plugins/ddev-passwordless-login.php + mode: "0444" + - source: entrypoint.sh + target: /usr/local/bin/entrypoint.sh + mode: "0755" + +configs: + ddev-adminer.php: + content: | + $$_ENV['ADMINER_DEFAULT_DRIVER'], + 'server' => $$_ENV['ADMINER_DEFAULT_SERVER'], + 'db' => $$_ENV['ADMINER_DEFAULT_DB'], + 'username' => $$_ENV['ADMINER_DEFAULT_USERNAME'], + 'password' => $$_ENV['ADMINER_DEFAULT_PASSWORD'], + ]; + } + include './index.php'; + ?> + + ddev-passwordless-login.php: + content: | + plugins-enabled/$$(printf "%03d" $$number)-$$PLUGIN.php + number=$$(($$number+1)) + done + touch .adminer-init || true + exec "$$@" diff --git a/.ddev/docker-compose.adminer_norouter.yaml b/.ddev/docker-compose.adminer_norouter.yaml new file mode 100644 index 0000000..338f90b --- /dev/null +++ b/.ddev/docker-compose.adminer_norouter.yaml @@ -0,0 +1,4 @@ +#ddev-generated +# If omit_containers[ddev-router] then this file will be replaced +# with another with a 'ports' statement to directly expose port 8080 to 9100 +services: {}