Add docker-mysql
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
docker-jellyseerr = import ./docker/jellyseerr { inherit pkgs; };
|
docker-jellyseerr = import ./docker/jellyseerr { inherit pkgs; };
|
||||||
docker-littlelink-server = import ./docker/littlelink-server { inherit pkgs inputs system; };
|
docker-littlelink-server = import ./docker/littlelink-server { inherit pkgs inputs system; };
|
||||||
docker-mariadb = import ./docker/mariadb { inherit pkgs; };
|
docker-mariadb = import ./docker/mariadb { inherit pkgs; };
|
||||||
|
docker-mysql = import ./docker/mysql { inherit pkgs; };
|
||||||
docker-nextcloud = import ./docker/nextcloud { inherit pkgs; };
|
docker-nextcloud = import ./docker/nextcloud { inherit pkgs; };
|
||||||
docker-nginx = import ./docker/nginx { inherit pkgs; };
|
docker-nginx = import ./docker/nginx { inherit pkgs; };
|
||||||
docker-ntfy = import ./docker/ntfy { inherit pkgs; };
|
docker-ntfy = import ./docker/ntfy { inherit pkgs; };
|
||||||
|
@@ -16,7 +16,6 @@ pkgs.dockerTools.buildImage {
|
|||||||
paths = with pkgs; [
|
paths = with pkgs; [
|
||||||
entrypoint
|
entrypoint
|
||||||
mariadb
|
mariadb
|
||||||
gnused
|
|
||||||
];
|
];
|
||||||
pathsToLink = [
|
pathsToLink = [
|
||||||
"/bin"
|
"/bin"
|
||||||
|
@@ -6,8 +6,8 @@ set -o nounset
|
|||||||
MYSQL_USER="${MYSQL_USER:-mariadb}"
|
MYSQL_USER="${MYSQL_USER:-mariadb}"
|
||||||
MYSQL_PASSWORD="${MYSQL_PASSWORD:-mariadb}"
|
MYSQL_PASSWORD="${MYSQL_PASSWORD:-mariadb}"
|
||||||
MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD:-$MYSQL_PASSWORD}"
|
MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD:-$MYSQL_PASSWORD}"
|
||||||
MYSQL_DB="${MYSQL_DB:-$MYSQL_USER}"
|
MYSQL_DB="${MYSQL_DB}"
|
||||||
export DATADIR="${DATADIR:-/var/lib/mysql}"
|
DATADIR="${DATADIR:-/var/lib/mysql}"
|
||||||
|
|
||||||
if [ ! -f "$DATADIR/mysql_upgrade_info" ]; then
|
if [ ! -f "$DATADIR/mysql_upgrade_info" ]; then
|
||||||
mariadb-install-db --datadir="$DATADIR" --skip-test-db
|
mariadb-install-db --datadir="$DATADIR" --skip-test-db
|
||||||
|
41
packages/docker/mysql/default.nix
Normal file
41
packages/docker/mysql/default.nix
Normal 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" = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
39
packages/docker/mysql/entrypoint.sh
Normal file
39
packages/docker/mysql/entrypoint.sh
Normal 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 $?
|
@@ -8,7 +8,7 @@ if [ ! -f "/var/www/nextcloud/config/config.php" ]; then
|
|||||||
POSTGRES_PORT="${POSTGRES_PORT:-5432}"
|
POSTGRES_PORT="${POSTGRES_PORT:-5432}"
|
||||||
POSTGRES_USER="${POSTGRES_USER:-nextcloud}"
|
POSTGRES_USER="${POSTGRES_USER:-nextcloud}"
|
||||||
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-nextcloud}"
|
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-nextcloud}"
|
||||||
POSTGRES_DB="${POSTGRES_DB:-$POSTGRES_USER}"
|
POSTGRES_DB="${POSTGRES_DB}"
|
||||||
|
|
||||||
ADMIN_USER="admin"
|
ADMIN_USER="admin"
|
||||||
ADMIN_PASS="$(head -c 128 /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 64)"
|
ADMIN_PASS="$(head -c 128 /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 64)"
|
||||||
|
@@ -5,7 +5,7 @@ set -o nounset
|
|||||||
|
|
||||||
POSTGRES_USER="${POSTGRES_USER:-postgres}"
|
POSTGRES_USER="${POSTGRES_USER:-postgres}"
|
||||||
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-postgres}"
|
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-postgres}"
|
||||||
POSTGRES_DB="${POSTGRES_DB:-$POSTGRES_USER}"
|
POSTGRES_DB="${POSTGRES_DB}"
|
||||||
export PGDATA="${PGDATA:-/var/lib/postgresql/data}"
|
export PGDATA="${PGDATA:-/var/lib/postgresql/data}"
|
||||||
|
|
||||||
LOG_PIPE="$(mktemp -u)"
|
LOG_PIPE="$(mktemp -u)"
|
||||||
|
Reference in New Issue
Block a user