diff --git a/.env.example b/.env.example index 0fc203ec..564790bc 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 14b4d5ad..f21be32e 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 19f1518b..8c96db92 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 1d262082..3e47689e 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 fc2228be..23f2c336 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 00000000..70661017 --- /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 0eb9ff27..b4ec4b5f 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 00000000..e69de29b