#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 "$$@"