added adminer
This commit is contained in:
138
.ddev/docker-compose.adminer.yaml
Normal file
138
.ddev/docker-compose.adminer.yaml
Normal file
@@ -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: |
|
||||
<?php
|
||||
// Let static files be served directly
|
||||
$$uri = parse_url($$_SERVER['REQUEST_URI'], PHP_URL_PATH);
|
||||
if (is_file('/var/www/html' . $$uri)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!count($$_GET)) {
|
||||
if ($$_ENV['ADMINER_DEFAULT_DRIVER'] === 'mysql') {
|
||||
$$_ENV['ADMINER_DEFAULT_DRIVER'] = 'server';
|
||||
} else if ($$_ENV['ADMINER_DEFAULT_DRIVER'] === 'postgres') {
|
||||
$$_ENV['ADMINER_DEFAULT_DRIVER'] = 'pgsql';
|
||||
}
|
||||
$$_POST['auth'] = [
|
||||
'driver' => $$_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: |
|
||||
<?php
|
||||
/**
|
||||
* Adminer plugin for enabling passwordless login in DDEV.
|
||||
* By default, only the SQLite driver is supported.
|
||||
*/
|
||||
class DDEVPasswordlessLogin extends Adminer\Plugin {
|
||||
|
||||
function login($$login, $$password) {
|
||||
if (Adminer\JUSH === 'sqlite' && empty($$password)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
entrypoint.sh:
|
||||
content: |
|
||||
#!/bin/sh
|
||||
set -e
|
||||
if [ -n "$$ADMINER_DESIGN" ]; then
|
||||
# Only create link on initial start, to ensure that explicit changes to
|
||||
# adminer.css after the container was started once are preserved.
|
||||
if [ ! -e .adminer-init ]; then
|
||||
for css_file in adminer.css adminer-dark.css; do
|
||||
if [ -f "designs/$$ADMINER_DESIGN/$$css_file" ]; then
|
||||
ln -sf "designs/$$ADMINER_DESIGN/$$css_file" adminer.css
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
number=1
|
||||
for PLUGIN in $$ADMINER_PLUGINS; do
|
||||
php plugin-loader.php "$$PLUGIN" > plugins-enabled/$$(printf "%03d" $$number)-$$PLUGIN.php
|
||||
number=$$(($$number+1))
|
||||
done
|
||||
touch .adminer-init || true
|
||||
exec "$$@"
|
||||
Reference in New Issue
Block a user