Add docker-mysql

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-07-23 18:54:45 +01:00
parent 53e2f3106b
commit 0649e4f9df
7 changed files with 85 additions and 5 deletions

View File

@@ -20,6 +20,7 @@
docker-jellyseerr = import ./docker/jellyseerr { inherit pkgs; };
docker-littlelink-server = import ./docker/littlelink-server { inherit pkgs inputs system; };
docker-mariadb = import ./docker/mariadb { inherit pkgs; };
docker-mysql = import ./docker/mysql { inherit pkgs; };
docker-nextcloud = import ./docker/nextcloud { inherit pkgs; };
docker-nginx = import ./docker/nginx { inherit pkgs; };
docker-ntfy = import ./docker/ntfy { inherit pkgs; };

View File

@@ -16,7 +16,6 @@ pkgs.dockerTools.buildImage {
paths = with pkgs; [
entrypoint
mariadb
gnused
];
pathsToLink = [
"/bin"

View File

@@ -6,8 +6,8 @@ set -o nounset
MYSQL_USER="${MYSQL_USER:-mariadb}"
MYSQL_PASSWORD="${MYSQL_PASSWORD:-mariadb}"
MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD:-$MYSQL_PASSWORD}"
MYSQL_DB="${MYSQL_DB:-$MYSQL_USER}"
export DATADIR="${DATADIR:-/var/lib/mysql}"
MYSQL_DB="${MYSQL_DB}"
DATADIR="${DATADIR:-/var/lib/mysql}"
if [ ! -f "$DATADIR/mysql_upgrade_info" ]; then
mariadb-install-db --datadir="$DATADIR" --skip-test-db

View File

@@ -0,0 +1,41 @@
{ pkgs, ... }:
let
entrypoint = pkgs.writeTextFile {
name = "entrypoint";
executable = true;
destination = "/bin/entrypoint";
text = builtins.readFile ./entrypoint.sh;
};
in
pkgs.dockerTools.buildImage {
name = "mysql";
fromImage = import ../base { inherit pkgs; };
copyToRoot = pkgs.buildEnv {
name = "root";
paths = with pkgs; [
entrypoint
mysql84
];
pathsToLink = [
"/bin"
"/lib"
"/share"
];
};
runAsRoot = ''
mkdir -p /run/mysqld
'';
config = {
Entrypoint = [ "entrypoint" ];
ExposedPorts = {
"3306/tcp" = { };
};
WorkingDir = "/var/lib/mysql";
Volumes = {
"/var/lib/mysql" = { };
};
};
}

View File

@@ -0,0 +1,39 @@
#!/bin/sh
set -o errexit
set -o nounset
MYSQL_USER="${MYSQL_USER:-mysql}"
MYSQL_PASSWORD="${MYSQL_PASSWORD:-mysql}"
MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD:-$MYSQL_PASSWORD}"
MYSQL_DB="${MYSQL_DB}"
DATADIR="${DATADIR:-/var/lib/mysql}"
if [ ! -f "$DATADIR/mysql_upgrade_history" ]; then
mysqld --initialize-insecure --datadir="$DATADIR"
mysqld --user=root --datadir="$DATADIR" --skip-networking --skip-grant-tables &
PID="$!"
while ! mysql --protocol=socket -e "
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';
CREATE USER '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO '$MYSQL_USER'@'%' WITH GRANT OPTION;
CREATE DATABASE \`$MYSQL_DB\`;
"; do
sleep 0.1
done
kill -QUIT "$PID"
wait "$PID" || true
fi
trap 'kill -QUIT "$PID"' INT TERM
mysqld --user=root --datadir="$DATADIR" "$@" &
PID=$!
wait "$PID"
exit $?

View File

@@ -8,7 +8,7 @@ if [ ! -f "/var/www/nextcloud/config/config.php" ]; then
POSTGRES_PORT="${POSTGRES_PORT:-5432}"
POSTGRES_USER="${POSTGRES_USER:-nextcloud}"
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-nextcloud}"
POSTGRES_DB="${POSTGRES_DB:-$POSTGRES_USER}"
POSTGRES_DB="${POSTGRES_DB}"
ADMIN_USER="admin"
ADMIN_PASS="$(head -c 128 /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 64)"

View File

@@ -5,7 +5,7 @@ set -o nounset
POSTGRES_USER="${POSTGRES_USER:-postgres}"
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-postgres}"
POSTGRES_DB="${POSTGRES_DB:-$POSTGRES_USER}"
POSTGRES_DB="${POSTGRES_DB}"
export PGDATA="${PGDATA:-/var/lib/postgresql/data}"
LOG_PIPE="$(mktemp -u)"