diff --git a/mariadb/Dockerfile b/mariadb/Dockerfile new file mode 100644 index 0000000..c899766 --- /dev/null +++ b/mariadb/Dockerfile @@ -0,0 +1,9 @@ +FROM centos:7 +COPY repo /etc/yum.repos.d/MariaDB.repo +RUN yum update -y +RUN yum install MariaDB-server MariaDB-client -y +RUN /bin/rm -R /var/lib/mysql/* +COPY docker-entrypoint.sh / +RUN chmod +x /docker-entrypoint.sh +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["mysqld"] diff --git a/mariadb/docker-entrypoint.sh b/mariadb/docker-entrypoint.sh new file mode 100644 index 0000000..8a55cf4 --- /dev/null +++ b/mariadb/docker-entrypoint.sh @@ -0,0 +1,67 @@ +#!/bin/bash + + +if [[ (! -z "${MYSQL_DAEMON_USER}" ) && ( "${MYSQL_DAEMON_USER}" != "root" ) ]]; then + useradd -r -s /bin/false $MYSQL_DAEMON_USER + if [[ ! -z "${MYSQL_DAEMON_USER_UID}" ]]; then + usermod -u $MYSQL_DAEMON_USER_UID $MYSQL_DAEMON_USER + fi + if [[ ! -z "${MYSQL_DAEMON_USER_GID}" ]]; then + groupmod -g $MYSQL_DAEMON_USER_GID $MYSQL_DAEMON_USER + fi +fi + +DBEXIST=1 +if [ ! -d "/var/lib/mysql/mysql" ]; then + DBEXIST=0 + echo "Creating system tables" + if [[ ! -z "${MYSQL_DAEMON_USER}" ]]; then + mysql_install_db --user=$MYSQL_DAEMON_USER + else + mysql_install_db + fi + +else + echo "Skipping system tables creation. Chowning Data" + if [[ ! -z "${MYSQL_DAEMON_USER}" ]]; then + chown -R $(id -u ${MYSQL_DAEMON_USER}):$(id -g ${MYSQL_DAEMON_USER}) /var/lib/mysql + else + chown -R $(id -u):$(id -g) /var/lib/mysql + fi + +fi + +if [[ ! -z "${MYSQL_DAEMON_USER}" ]]; then + runuser -u ${MYSQL_DAEMON_USER} -- $@ --socket=/tmp/mysql.sock --bind-address=0.0.0.0 & +else + $@ --user=root --socket=/tmp/mysql.sock -bind-address=0.0.0.0 & +fi + + +if [[ $DBEXIST -eq 0 ]]; then + + MYSQLSTARTED=0 + + while [[ $MYSQLSTARTED -eq 0 ]] + do + if [[ ! -z "${MYSQL_ROOT_PASSWORD}" ]]; then + mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'" --socket=/tmp/mysql.sock + else + mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'default'" --socket=/tmp/mysql.sock + fi + + if [ $? -eq 0 ]; then + MYSQLSTARTED=1 + echo "DB Root Password set" + else + echo "Trying to set DB Root Password" + sleep 3 + fi + done +else + echo "Skipping DB Root Password setting" +fi + +wait + + diff --git a/mariadb/repo b/mariadb/repo new file mode 100644 index 0000000..2a89f98 --- /dev/null +++ b/mariadb/repo @@ -0,0 +1,7 @@ +# MariaDB 10.4 CentOS repository list - created 2020-06-11 09:49 UTC +# http://downloads.mariadb.org/mariadb/repositories/ +[mariadb] +name = MariaDB +baseurl = http://yum.mariadb.org/10.4/centos7-amd64 +gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB +gpgcheck=1 diff --git a/mysql-cluster/Dockerfile b/mysql-cluster/Dockerfile new file mode 100644 index 0000000..a3e6835 --- /dev/null +++ b/mysql-cluster/Dockerfile @@ -0,0 +1,7 @@ +FROM centos:7 +RUN yum install -y \ + https://dev.mysql.com/get/Downloads/MySQL-Cluster-8.0/mysql-cluster-community-server-minimal-8.0.22-1.el7.x86_64.rpm \ + && yum clean all +COPY docker-entrypoint.sh / +RUN chmod +x /docker-entrypoint.sh +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/mysql-cluster/docker-entrypoint.sh b/mysql-cluster/docker-entrypoint.sh new file mode 100644 index 0000000..1b873c0 --- /dev/null +++ b/mysql-cluster/docker-entrypoint.sh @@ -0,0 +1,125 @@ +#!/bin/bash + + +if [[ (! -z "${MYSQL_DAEMON_USER}" ) && ( "${MYSQL_DAEMON_USER}" != "root" ) ]]; then + useradd -r -s /bin/false $MYSQL_DAEMON_USER + if [[ ! -z "${MYSQL_DAEMON_USER_UID}" ]]; then + usermod -u $MYSQL_DAEMON_USER_UID $MYSQL_DAEMON_USER + fi + if [[ ! -z "${MYSQL_DAEMON_USER_GID}" ]]; then + groupmod -g $MYSQL_DAEMON_USER_GID $MYSQL_DAEMON_USER + fi +fi + +if [ ! -d "/usr/mysql-cluster" ]; then + mkdir -p /usr/mysql-cluster +fi + +if [ ! -d "/var/lib/mysql" ]; then + mkdir -p /var/lib/mysql +fi + +if [ ! -d "/var/run/mysqld" ]; then + mkdir -p /var/run/mysqld +fi + +if [[ ( "${MYSQLD_CLUSTER}" = "true" ) ]]; then + DBEXIST=1 + if [ ! -d "/var/lib/mysql/mysql" ]; then + DBEXIST=0 + echo "Creating mysqld system tables" + mysqld --initialize-insecure + fi +fi + +echo "Chowning Data" +if [[ ! -z "${MYSQL_DAEMON_USER}" ]]; then + chown -R $(id -u ${MYSQL_DAEMON_USER}):$(id -g ${MYSQL_DAEMON_USER}) /var/lib/mysql + chown -R $(id -u ${MYSQL_DAEMON_USER}):$(id -g ${MYSQL_DAEMON_USER}) /usr/mysql-cluster + chown -R $(id -u ${MYSQL_DAEMON_USER}):$(id -g ${MYSQL_DAEMON_USER}) /var/run/mysqld +else + chown -R $(id -u):$(id -g) /var/lib/mysql + chown -R $(id -u):$(id -g) /usr/mysql-cluster + chown -R $(id -u):$(id -g) /var/run/mysqld +fi + + + +if [[ ! -z "${MYSQL_DAEMON_USER}" ]]; then + if [[ ( "${MYSQLD_CLUSTER}" = "true" ) ]]; then + runuser -u ${MYSQL_DAEMON_USER} -- $@ --socket=/tmp/mysql.sock --bind-address=0.0.0.0 & + else + runuser -u ${MYSQL_DAEMON_USER} -- $@ & + fi +else + if [[ ( "${MYSQLD_CLUSTER}" = "true" ) ]]; then + sed -i "s/.*user=.*/user=root/" /etc/my.cnf #needed to change the user option otherwise mysqld doesn't start in root mode + $@ --user=root --socket=/tmp/mysql.sock -bind-address=0.0.0.0 & + else + $@ & + fi +fi + +if [[ -z "${MYSQLD_CLUSTER_NOPASS}" ]]; then + MYSQLD_CLUSTER_NOPASS="false" +fi + + +if [[ ($DBEXIST -eq 0) && ( "${MYSQLD_CLUSTER}" = "true" ) && ( "${MYSQLD_CLUSTER_NOPASS}" = "false" )]]; then + + sleep 10 + + echo "Trying to set DB Root Password" + MYSQLSTARTED=0 + FIRSTPHASE=0; + SECONDPHASE=0; + + PASSWORD="default" + + if [[ ! -z "${MYSQLD_ROOT_PASSWORD}" ]]; then + PASSWORD="${MYSQLD_ROOT_PASSWORD}" + fi + + if [[ ! -z "${MYSQLD_ROOT_PASSWORD_FILE}" ]]; then + PASSWORD="$(cat ${MYSQLD_ROOT_PASSWORD_FILE})" + fi + + while [[ $MYSQLSTARTED -eq 0 ]] + do + RESULT="" + + mysql -u root -e "CREATE USER 'root'@'%' IDENTIFIED BY '${PASSWORD}';GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';" --socket=/tmp/mysql.sock + if [ $? -ne 0 ]; then + RESULT=$(mysql --socket=/tmp/mysql.sock -u root -e "SELECT 1 FROM mysql.user WHERE user = 'root' AND host = '%';") + if [[ (! -z "${RESULT}") && ( $? -eq 0 ) ]]; then + mysql -u root -e "ALTER USER 'root'@'%' IDENTIFIED BY '${PASSWORD}';" --socket=/tmp/mysql.sock + if [ $? -eq 0 ]; then + FIRSTPHASE=1; + fi + fi + else + FIRSTPHASE=1; + fi + + if [[ $FIRSTPHASE -eq 1 ]]; then + mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${PASSWORD}';FLUSH PRIVILEGES;" --socket=/tmp/mysql.sock + if [ $? -eq 0 ]; then + SECONDPHASE=1; + fi + fi + + + if [[ ( $FIRSTPHASE -eq 1 ) && ( $SECONDPHASE -eq 1 )]]; then + MYSQLSTARTED=1 + echo "DB Root Password set" + else + echo "Retrying to set DB Root Password in 10 sec" + sleep 10 + fi + done +fi + +wait + + + diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile new file mode 100644 index 0000000..6410512 --- /dev/null +++ b/php-fpm/Dockerfile @@ -0,0 +1,2 @@ +FROM php:7.4.7-fpm +RUN docker-php-ext-install pdo pdo_mysql diff --git a/sshd/Dockerfile b/sshd/Dockerfile new file mode 100644 index 0000000..05c7cb9 --- /dev/null +++ b/sshd/Dockerfile @@ -0,0 +1,7 @@ +FROM ubuntu +RUN apt-get update && apt-get install -y openssh-server +RUN mkdir /var/run/sshd +COPY sshd_config /etc/ssh/sshd_config +COPY docker-entrypoint.sh / +RUN chmod +x /docker-entrypoint.sh +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/sshd/docker-entrypoint.sh b/sshd/docker-entrypoint.sh new file mode 100644 index 0000000..6a8bd6b --- /dev/null +++ b/sshd/docker-entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/bash +cleanup() { + exit +} +trap cleanup HUP INT QUIT TERM + + + +echo "root:$(cat $ROOT_PASSWORD_FILE)" | chpasswd +/usr/sbin/sshd -D +#exec "$@" diff --git a/sshd/sshd_config b/sshd/sshd_config new file mode 100644 index 0000000..b91a433 --- /dev/null +++ b/sshd/sshd_config @@ -0,0 +1,11 @@ +PermitRootLogin yes +ChallengeResponseAuthentication no +UsePAM yes +AllowAgentForwarding yes +AllowTcpForwarding yes +GatewayPorts yes +X11Forwarding yes +#X11DisplayOffset 10 +#X11UseLocalhost yes +PermitTTY yes +PrintMotd no