diff --git a/.env.example b/.env.example
index 0fc203e..564790b 100644
--- a/.env.example
+++ b/.env.example
@@ -173,7 +173,7 @@ WORKSPACE_INSTALL_SWOOLE=false
WORKSPACE_INSTALL_TAINT=false
WORKSPACE_INSTALL_LIBPNG=false
WORKSPACE_INSTALL_GRAPHVIZ=false
-WORKSPACE_INSTALL_IONCUBE=false # PHP 8.0 is not supported yet. Reference: https://forum.ioncube.com/viewtopic.php?t=4592
+WORKSPACE_INSTALL_IONCUBE=false # PHP 8.2 is not supported yet.
WORKSPACE_INSTALL_MYSQL_CLIENT=false
WORKSPACE_INSTALL_PING=false
WORKSPACE_INSTALL_SSHPASS=false
@@ -261,7 +261,7 @@ PHP_FPM_INSTALL_POSTGIS=false
PHP_FPM_INSTALL_PCNTL=false
PHP_FPM_INSTALL_CALENDAR=false
PHP_FPM_INSTALL_FAKETIME=false
-PHP_FPM_INSTALL_IONCUBE=false # PHP 8.0 is not supported yet. Reference: https://forum.ioncube.com/viewtopic.php?t=4592
+PHP_FPM_INSTALL_IONCUBE=false # PHP 8.2 is not supported yet.
PHP_FPM_INSTALL_RDKAFKA=false
PHP_FPM_INSTALL_GETTEXT=false
PHP_FPM_INSTALL_XMLRPC=false
@@ -1067,3 +1067,15 @@ SOKETI_METRICS_SERVER_PORT=9601
### ONEDEV ##################################################
ONEDEV_HTTP_PORT=6610
ONEDEV_SSH_PORT=6611
+
+### Keycloak ################################################
+KEYCLOAK_VERSION=latest
+KEYCLOAK_POSTGRES_INIT=true
+KEYCLOAK_HTTP_PORT=8081
+KEYCLOAK_CREATE_ADMIN_USER=true
+KEYCLOAK_ADMIN_USER='admin'
+KEYCLOAK_ADMIN_PASSWORD='secret'
+KEYCLOAK_POSTGRES_HOST=postgres
+KEYCLOAK_POSTGRES_USER=laradock_keycloak
+KEYCLOAK_POSTGRES_PASSWORD=laradock_keycloak
+KEYCLOAK_POSTGRES_DB=laradock_keycloak
diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md
index 14b4d5a..f21be32 100644
--- a/DOCUMENTATION/content/documentation/index.md
+++ b/DOCUMENTATION/content/documentation/index.md
@@ -1490,6 +1490,23 @@ docker-compose exec tarantool console
7 - There you can operate with tarantool database ([official documentation](https://www.tarantool.io/en/doc/latest/) can be helpful).
+
+
+## Use Keycloak
+
+1. Run the Keycloak Container (`keycloak`) with the `docker-compose up` command. Example:
+
+```bash
+docker-compose up -d keycloak
+```
+
+2. Open your browser and visit the localhost on port 8081: `http://localhost:8081`
+
+3. Login with the following credentials:
+
+ - Username: `admin`
+ - Password: `secret`
+
@@ -2525,6 +2542,13 @@ docker-compose up ...
*Note: If you faced any errors, try restarting Docker, and make sure you have no spaces in the `d4m-nfs-mounts.txt` file, and your `/etc/exports` file is clear.*
+
+
+## ca-certificates
+
+To install your own CA certificates, you can add them to the `workspace/ca-certificates` folder.
+This way the certificates will be installed into the system ca store of the workspace container.
+
diff --git a/docker-compose.yml b/docker-compose.yml
index 19f1518..8c96db9 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -599,7 +599,7 @@ services:
- no_proxy
- MARIADB_VERSION=${MARIADB_VERSION}
volumes:
- - ${DATA_PATH_HOST}/mariadb:/var/lib/mariadb
+ - ${DATA_PATH_HOST}/mariadb:/var/lib/mysql
- ${MARIADB_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${MARIADB_PORT}:3306"
@@ -631,6 +631,10 @@ services:
- GITLAB_POSTGRES_USER=${GITLAB_POSTGRES_USER}
- GITLAB_POSTGRES_PASSWORD=${GITLAB_POSTGRES_PASSWORD}
- GITLAB_POSTGRES_DB=${GITLAB_POSTGRES_DB}
+ - KEYCLOAK_POSTGRES_INIT=${KEYCLOAK_POSTGRES_INIT}
+ - KEYCLOAK_POSTGRES_USER=${KEYCLOAK_POSTGRES_USER}
+ - KEYCLOAK_POSTGRES_PASSWORD=${KEYCLOAK_POSTGRES_PASSWORD}
+ - KEYCLOAK_POSTGRES_DB=${KEYCLOAK_POSTGRES_DB}
- JUPYTERHUB_POSTGRES_INIT=${JUPYTERHUB_POSTGRES_INIT}
- JUPYTERHUB_POSTGRES_USER=${JUPYTERHUB_POSTGRES_USER}
- JUPYTERHUB_POSTGRES_PASSWORD=${JUPYTERHUB_POSTGRES_PASSWORD}
@@ -2100,3 +2104,24 @@ services:
- frontend
- backend
restart: always
+
+ ### keycloak ##################################################
+ keycloak:
+ image: bitnami/keycloak:${KEYCLOAK_VERSION}
+ ports:
+ - "${KEYCLOAK_HTTP_PORT}:${KEYCLOAK_HTTP_PORT}"
+ environment:
+ - KEYCLOAK_HTTP_PORT=${KEYCLOAK_HTTP_PORT}
+ - KEYCLOAK_CREATE_ADMIN_USER=${KEYCLOAK_CREATE_ADMIN_USER}
+ - KEYCLOAK_ADMIN_USER=${KEYCLOAK_ADMIN_USER}
+ - KEYCLOAK_ADMIN_PASSWORD=${KEYCLOAK_ADMIN_PASSWORD}
+ - KEYCLOAK_DATABASE_HOST=${KEYCLOAK_POSTGRES_HOST}
+ - KEYCLOAK_DATABASE_PORT=${POSTGRES_PORT}
+ - KEYCLOAK_DATABASE_NAME=${KEYCLOAK_POSTGRES_DB}
+ - KEYCLOAK_DATABASE_USER=${KEYCLOAK_POSTGRES_USER}
+ - KEYCLOAK_DATABASE_PASSWORD=${KEYCLOAK_POSTGRES_PASSWORD}
+ depends_on:
+ - postgres
+ networks:
+ - frontend
+ - backend
diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile
index 1d26208..3e47689 100644
--- a/laravel-horizon/Dockerfile
+++ b/laravel-horizon/Dockerfile
@@ -31,10 +31,14 @@ RUN apk --update add wget \
cyrus-sasl-dev \
libgsasl-dev \
oniguruma-dev \
- libressl \
- libressl-dev \
supervisor \
- procps
+ procps; \
+ if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ] || \
+ [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \
+ apk --update add libressl libressl-dev; \
+ else \
+ apk --update add openssl-dev; \
+ fi
RUN pecl channel-update pecl.php.net; \
docker-php-ext-install mysqli mbstring pdo pdo_mysql xml pcntl; \
diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile
index fc2228b..23f2c33 100644
--- a/php-fpm/Dockerfile
+++ b/php-fpm/Dockerfile
@@ -219,10 +219,10 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
# Install the xdebug extension
# https://xdebug.org/docs/compat
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "3" ] ;} ;}; then \
- if [ ${LARADOCK_PHP_VERSION} = "8.2" ]; then \
- pecl install xdebug-3.2.0; \
+ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \
+ pecl install xdebug-3.2.1; \
else \
- pecl install xdebug-3.1.4; \
+ pecl install xdebug-3.1.6; \
fi; \
else \
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
@@ -655,7 +655,13 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \
ARG INSTALL_IONCUBE=false
RUN if [ ${INSTALL_IONCUBE} = true ]; then \
- if [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \
+ if [ ${LARADOCK_PHP_VERSION} = "8.1" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "7.4" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "7.3" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "7.2" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "7.1" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "7.0" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "5.6" ]; then \
# Install the php ioncube loader
curl -L -o /tmp/ioncube_loaders_lin_x86-64.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \
&& tar zxpf /tmp/ioncube_loaders_lin_x86-64.tar.gz -C /tmp \
diff --git a/postgres/docker-entrypoint-initdb.d/init_keycloak_db.sh b/postgres/docker-entrypoint-initdb.d/init_keycloak_db.sh
new file mode 100755
index 0000000..7066101
--- /dev/null
+++ b/postgres/docker-entrypoint-initdb.d/init_keycloak_db.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+#
+# Copy createdb.sh.example to createdb.sh
+# then uncomment then set database name and username to create you need databases
+#
+# example: .env POSTGRES_USER=appuser and need db name is myshop_db
+#
+# psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
+# CREATE USER myuser WITH PASSWORD 'mypassword';
+# CREATE DATABASE myshop_db;
+# GRANT ALL PRIVILEGES ON DATABASE myshop_db TO myuser;
+# EOSQL
+#
+# this sh script will auto run when the postgres container starts and the $DATA_PATH_HOST/postgres not found.
+#
+#
+# psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
+# CREATE USER db1 WITH PASSWORD 'db1';
+# CREATE DATABASE db1;
+# GRANT ALL PRIVILEGES ON DATABASE db1 TO db1;
+# EOSQL
+#
+# psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
+# CREATE USER db2 WITH PASSWORD 'db2';
+# CREATE DATABASE db2;
+# GRANT ALL PRIVILEGES ON DATABASE db2 TO db2;
+# EOSQL
+#
+# psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
+# CREATE USER db3 WITH PASSWORD 'db3';
+# CREATE DATABASE db3;
+# GRANT ALL PRIVILEGES ON DATABASE db3 TO db3;
+# EOSQL
+#
+### default database and user for keycloak ##############################################
+if [ "$KEYCLOAK_POSTGRES_INIT" == 'true' ]; then
+ psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
+ CREATE USER $KEYCLOAK_POSTGRES_USER WITH PASSWORD '$KEYCLOAK_POSTGRES_PASSWORD';
+ CREATE DATABASE $KEYCLOAK_POSTGRES_DB;
+ GRANT ALL PRIVILEGES ON DATABASE $KEYCLOAK_POSTGRES_DB TO $KEYCLOAK_POSTGRES_USER;
+ ALTER ROLE $KEYCLOAK_POSTGRES_USER CREATEROLE SUPERUSER;
+ EOSQL
+ echo
+fi
diff --git a/workspace/Dockerfile b/workspace/Dockerfile
index 0eb9ff2..b4ec4b5 100644
--- a/workspace/Dockerfile
+++ b/workspace/Dockerfile
@@ -198,6 +198,15 @@ COPY ./crontab /etc/cron.d
RUN chmod -R 644 /etc/cron.d
+###########################################################################
+# Certificate Authorities
+###########################################################################
+
+USER root
+
+COPY ./ca-certificates/* /usr/local/share/ca-certificates/
+RUN update-ca-certificates
+
###########################################################################
# Drush:
###########################################################################
@@ -334,10 +343,10 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
# https://xdebug.org/docs/compat
apt-get install -yqq pkg-config php-xml php${LARADOCK_PHP_VERSION}-xml && \
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "3" ] ;} ;}; then \
- if [ ${LARADOCK_PHP_VERSION} = "8.2" ]; then \
- pecl install xdebug-3.2.0; \
+ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \
+ pecl install xdebug-3.2.1; \
else \
- pecl install xdebug-3.1.4; \
+ pecl install xdebug-3.1.6; \
fi; \
else \
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
@@ -682,7 +691,13 @@ RUN if [ ${INSTALL_GRAPHVIZ} = true ]; then \
ARG INSTALL_IONCUBE=false
RUN if [ ${INSTALL_IONCUBE} = true ]; then \
- if [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \
+ if [ ${LARADOCK_PHP_VERSION} = "8.1" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "7.4" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "7.3" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "7.2" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "7.1" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "7.0" ] \
+ || [ ${LARADOCK_PHP_VERSION} = "5.6" ]; then \
# Install the php ioncube loader
curl -L -o /tmp/ioncube_loaders_lin_x86-64.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \
&& tar zxpf /tmp/ioncube_loaders_lin_x86-64.tar.gz -C /tmp \
@@ -1315,6 +1330,7 @@ RUN if [ ${INSTALL_DUSK_DEPS} = true ]; then \
libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4 xvfb \
gtk2-engines-pixbuf xfonts-cyrillic xfonts-100dpi xfonts-75dpi \
xfonts-base xfonts-scalable x11-apps \
+ fonts-ipafont \
&& wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
&& dpkg -i --force-depends google-chrome-stable_current_amd64.deb \
&& apt-get -y -f install \
diff --git a/workspace/ca-certificates/.gitkeep b/workspace/ca-certificates/.gitkeep
new file mode 100644
index 0000000..e69de29