From: Vincent Vanwaelscappel Date: Thu, 7 Dec 2023 16:52:55 +0000 (+0100) Subject: wip #6561 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=225d4de5c008f6c1ef3ccffdcfc9d4e375ac4e8d;p=fluidbook-toolbox.git wip #6561 @1 --- diff --git a/.docker/alpha/build.sh b/.docker/alpha/build.sh new file mode 100644 index 000000000..a0f159d9e --- /dev/null +++ b/.docker/alpha/build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +cd /docker/fluidbook-toolbox-alpha +COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker compose pull +COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker compose build diff --git a/.docker/alpha/docker-compose.yml b/.docker/alpha/docker-compose.yml new file mode 100644 index 000000000..aa375b181 --- /dev/null +++ b/.docker/alpha/docker-compose.yml @@ -0,0 +1,178 @@ +version: '3.1' +services: + php-fpm: + container_name: fluidbook-toolbox-alpha + build: /data/toolbox/alpha/.docker/images/php-alpha + working_dir: /application + hostname: fluidbook-toolbox-alpha + environment: + TZ: Europe/Paris + HOME: /application + NODE_PATH: /usr/lib/node_modules + volumes: + # Files + - '/data/toolbox/alpha/:/application/' + - '/home/extranet/:/home/extranet/' + - '/data/extranet/:/data/extranet/' + - '/mnt/:/mnt/' + - '/home/extranet/share/:/application/share/' + - '/data/toolbox/alpha/storage/:/application/storage/' + - '/data/extranet/ftp/:/application/ftp/' + - '/mnt/sshfs/godzilla/data/fluidbook/docs/:/application/protected/fluidbookpublication/docs/' + - '/data/extranet/www/fluidbook/books/working/:/application/protected/fluidbookpublication/working/' + - '/data/extranet/www/fluidbook/books/links/:/application/protected/fluidbookpublication/links/' + - '/home/extranet/www/fluidbook/cache/unzip/:/application/storage/fluidbook/cache/unzip/' + - '/data/toolbox/protected/fluidbookpublication/cache/:/application/protected/fluidbookpublication/cache/' + - '/data/toolbox/protected/fluidbookpublication/pdf/:/application/protected/fluidbookpublication/pdf/' + # DEV + - '/home/toolbox/www/resources/fluidbookpublication/player/:/application/resources/fluidbookpublication/player/' + # Startup + - '/data/toolbox/alpha/bin/startup.sh:/usr/bin/startup.sh' + # SSH + - '/data/toolbox/alpha/.docker/config/ssh/root/:/root/.ssh/' + - '/data/toolbox/alpha/.docker/config/ssh/user/:/application/.ssh/' + - '/data/toolbox/alpha/.docker/config/ssh/server/:/etc/ssh/' + # Rsyslog + - '/data/toolbox/alpha/.docker/config/rsyslog/rsyslog.conf:/etc/rsyslog.conf' + - '/data/toolbox/alpha/.docker/config/rsyslog/50-default.conf:/etc/rsyslog.d/50-default.conf' + # Supervisor + - '/data/toolbox/alpha/.docker/config/supervisor/:/etc/supervisor/conf.d/' + # Composer + - '/data/toolbox/alpha/.docker/config/composer/:/root/.config/composer/' + - '/data/toolbox/alpha/.docker/config/composer/:/application/.config/composer/' + # NPM + - '/data/toolbox/alpha/.docker/config/npm/:/root/.npm/' + # GIT + - '/data/toolbox/alpha/.docker/config/gitconfig:/root/.gitconfig' + - '/data/toolbox/alpha/.docker/config/git/:/root/.config/git/' + - '/data/toolbox/alpha/.docker/config/git/:/application/.config/git/' + - '/data/toolbox/alpha/.docker/config/gitconfig:/application/.gitconfig' + # Monit + - '/data/toolbox/alpha/.docker/config/monit/:/etc/monit/' + - '/data/toolbox/alpha/.docker/config/monit/id:/var/lib/monit/id' + # Sudoers + - '/data/toolbox/alpha/.docker/config/sudoers:/etc/sudoers.d/toolbox' + # ImageMagick + - '/data/toolbox/alpha/.docker/config/imagemagick/policy.xml:/etc/ImageMagick-6/policy.xml' + # Passwords + - '/data/toolbox/alpha/.docker/config/passwords:/root/passwords' + # Cron + - '/data/toolbox/alpha/.docker/config/cron/crontab:/etc/crontab' + # Rclone + - '/data/toolbox/alpha/.docker/config/rclone.conf:/application/.config/rclone/rclone.conf' + # PHP + - '/data/toolbox/alpha/.docker/config/php/php.ini:/etc/php/8.2/fpm/conf.d/99-overrides.ini' + - '/data/toolbox/alpha/.docker/config/php/fpm.conf:/etc/php/8.2/fpm/pool.d/z-overrides.conf' + # ENV + - '/data/toolbox/alpha/.env.dev:/application/.env' + ports: + - '58748:8123' + - '58749:22' + networks: + - fluidbook-toolbox-alpha + - fluidbook-processfarm + privileged: true + restart: unless-stopped + + webserver: + container_name: fluidbook-toolbox-alpha-httpd + build: /data/toolbox/alpha/.docker/images/httpd + working_dir: /application + volumes: + # Files + - '/data/toolbox/alpha/:/application/' + - '/home/extranet/:/home/extranet/' + - '/data/extranet/:/data/extranet/' + - '/mnt/:/mnt/' + - '/home/extranet/share/:/application/share/' + - '/data/toolbox/alpha/storage/:/application/storage/' + - '/data/extranet/ftp/:/application/ftp/' + - '/mnt/sshfs/godzilla/data/fluidbook/docs/:/application/protected/fluidbookpublication/docs/' + - '/data/extranet/www/fluidbook/books/working/:/application/protected/fluidbookpublication/working/' + - '/data/extranet/www/fluidbook/books/links/:/application/protected/fluidbookpublication/links/' + - '/home/extranet/www/fluidbook/cache/unzip/:/application/storage/fluidbook/cache/unzip/' + - '/data/toolbox/protected/fluidbookpublication/cache/:/application/protected/fluidbookpublication/cache/' + - '/data/toolbox/protected/fluidbookpublication/pdf/:/application/protected/fluidbookpublication/pdf/' + # Config + - '/data/toolbox/alpha/.docker/config/httpd/httpd-alpha.conf:/usr/local/apache2/conf/httpd.conf' + # External volume + - 'sshfsusstorage:/application/usstorage:ro' + environment: + VIRTUAL_HOST: alpha.toolbox.fluidbook.com + LETSENCRYPT_HOST: alpha.toolbox.fluidbook.com + networks: + - fluidbook-toolbox-alpha + restart: unless-stopped + + adminer: + image: adminer:latest + container_name: fluidbook-toolbox-alpha-adminer + restart: unless-stopped + volumes: + - '/data/toolbox/alpha/.docker/config/adminer/php.ini:/etc/php/7.4/fpm/conf.d/settings.ini' + - '/data/toolbox/alpha/.docker/config/adminer/php.ini:/etc/php/7.4/cli/conf.d/settings.ini' + environment: + ADMINER_DEFAULT_SERVER: fluidbook-toolbox-alpha-mariadb + VIRTUAL_HOST: adminer.alpha.toolbox.fluidbook.com + LETSENCRYPT_HOST: adminer.alpha.toolbox.fluidbook.com + networks: + - fluidbook-toolbox-alpha + + mariadb: + container_name: fluidbook-toolbox-alpha-mariadb + image: 'mariadb' + restart: unless-stopped + ports: + - 12331:3306 + environment: + MARIADB_ROOT_PASSWORD: 9xHw8nyRuphyTvqC + MARIADB_DATABASE: fluidbook-toolbox + MARIADB_AUTO_UPGRADE: 1 + volumes: + - "./database/plugin:/usr/lib/mysql/plugin/" + - "./database/data:/var/lib/mysql" + - "./database/dump.sql:/docker-entrypoint-initdb.d/dump.sql" + - "/data/toolbox/alpha/.docker/config/mariadb:/etc/mysql/conf.d:z" + networks: + - fluidbook-toolbox-alpha + + redis: + container_name: fluidbook-toolbox-alpha-redis + image: redis + volumes: + - './redis/data:/data' + networks: + - fluidbook-toolbox-alpha + restart: unless-stopped + + mysqlbackup: + image: selim13/automysqlbackup + container_name: fluidbook-toolbox-alpha-automysqlbackup + volumes: + - "./database/backup:/backup" + restart: unless-stopped + environment: + USERNAME: root + PASSWORD: 9xHw8nyRuphyTvqC + DBHOST: fluidbook-toolbox-alpha-mariadb + DBEXCLUDE: "performance_schema information_schema" + CRON_SCHEDULE: "0 0 * * *" + EXTRA_OPTS: "--single-transaction" + networks: + - fluidbook-toolbox-alpha + +networks: + fluidbook-toolbox-alpha: + external: + name: fluidbook-toolbox-alpha + fluidbook-processfarm: + external: + name: fluidbook-processfarm + +volumes: + sshfsusstorage: + driver: ucphhpc/sshfs:latest + driver_opts: + sshcmd: "fluidbook@kingkong.cubedesigners.com:/home/fluidbook/data" + allow_other: "" + password: "Qu2E9uq48bBzsqGiZA" diff --git a/.docker/alpha/update.sh b/.docker/alpha/update.sh new file mode 100644 index 000000000..a71c10d94 --- /dev/null +++ b/.docker/alpha/update.sh @@ -0,0 +1,12 @@ +#!/bin/sh +cd /docker/fluidbook-toolbox-alpha +docker plugin install ucphhpc/sshfs --grant-all-permissions +/data/toolbox/alpha/scripts/fixrights.sh +chown root:root /data/toolbox/alpha/.docker/config/cron/host;ln -sf /data/toolbox/alpha/.docker/config/cron/host /etc/cron.d/toolbox-alpha +docker network create fluidbook-toolbox-alpha +docker compose down +docker volume rm fluidbook-toolbox-alpha_sshfsusstorage +docker compose up -d +/data/toolbox/alpha/scripts/fixrights.sh +docker exec -it fluidbook-toolbox /application/scripts/update.sh +find /data/toolbox/alpha/ -type d \( -path /data/toolbox/alpha/.docker \) -prune -o -exec chown -R toolbox:www-data {} \; diff --git a/.docker/images/php-alpha/Dockerfile b/.docker/images/php-alpha/Dockerfile new file mode 100644 index 000000000..3d4bcaa0a --- /dev/null +++ b/.docker/images/php-alpha/Dockerfile @@ -0,0 +1,98 @@ +FROM ubuntu:jammy AS cli + +WORKDIR "/application" + +# Fixes some weird terminal issues such as broken clear / CTRL+L +ENV TERM=linux + +# Ensure apt doesn't ask questions when installing stuff +ENV DEBIAN_FRONTEND=noninteractive + +# Compile NSISbi +RUN apt update && apt -y --no-install-recommends install build-essential scons mingw-w64 zlib1g-dev curl unzip ca-certificates wget gnupg +RUN cd /root && curl -L https://master.dl.sourceforge.net/project/nsisbi/nsisbi3.08.1/nsis-code-7336-1-NSIS-trunk.zip -o /root/nsis.zip && unzip -o /root/nsis.zip && cd /root/nsis-code-7336-1-NSIS-trunk && scons SKIPUTILS="zip2exe","NSIS Menu" && scons install SKIPUTILS="zip2exe","NSIS Menu" + +# Add additional repositories +RUN curl -fsSL https://deb.nodesource.com/setup_19.x | bash - +RUN sh -c 'echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list' +RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - +RUN echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ondrej-php.list \ + && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C + +RUN apt update && apt -y --no-install-recommends install \ + git git-restore-mtime \ + php8.2-fpm \ + php8.2-apcu \ + php8.2-cli \ + php8.2-curl \ + php8.2-mbstring \ + php8.2-opcache \ + php8.2-readline \ + php8.2-xml \ + php8.2-zip \ + php8.2-bz2 \ + php8.2-gd \ + php8.2-igbinary \ + php8.2-imap \ + php8.2-imagick \ + php8.2-intl \ + php8.2-memcached \ + php8.2-mysql \ + php8.2-redis \ + php8.2-soap \ + php8.2-ssh2 \ + php8.2-tidy \ + php8.2-xsl \ + php8.2-curl \ + php8.2-mcrypt \ + php8.2-bcmath \ + less nano wget bash lynx + +COPY --from=composer:2 /usr/bin/composer /usr/bin/composer +STOPSIGNAL SIGQUIT + +# Toolbox +RUN apt -y --no-install-recommends install nodejs google-chrome-stable +RUN apt -y --no-install-recommends install sudo +RUN apt -y --no-install-recommends install supervisor ssh rsync +RUN apt update && apt -y --no-install-recommends install default-jre pdftk poppler-utils inkscape mupdf-tools ghostscript imagemagick netpbm libjpeg-turbo8 libjpeg-turbo-progs +RUN apt -y --no-install-recommends install zip unzip gzip 7zip +RUN apt -y --no-install-recommends install icoutils fontforge icnsutils +RUN apt -y --no-install-recommends install ffmpeg python3 lame x264 vorbis-tools +RUN apt -y --no-install-recommends install inkscape mupdf-tools librsvg2-bin +RUN apt -y --no-install-recommends install cron monit locate telnet +RUN apt -y --no-install-recommends install mariadb-client +RUN apt -y --no-install-recommends install build-essential chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev +RUN apt -y --no-install-recommends install libreoffice +RUN apt -y --no-install-recommends install lftp rclone +RUN apt -y --no-install-recommends install sshfs python3 python3-pip +RUN apt -y --no-install-recommends install openssh-server rsyslog +RUN apt -y --no-install-recommends install wine libwine wine64 +RUN apt -y --no-install-recommends install pdfposter rename +RUN apt -y --no-install-recommends install jdupes + +RUN apt -y --no-install-recommends install locales +RUN sed -i '/fr_FR.UTF-8/s/^# //g' /etc/locale.gen && \ + locale-gen +ENV LANG fr_FR.UTF-8 +ENV LANGUAGE fr_FR:fr +ENV LC_ALL fr_FR.UTF-8 + +RUN cd /root;wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2;tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2;mv phantomjs-2.1.1-linux-x86_64 /usr/local/share;ln -sf /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin +RUN cd /root;wget https://github.com/RazrFalcon/svgcleaner/releases/download/v0.9.5/svgcleaner_linux_x86_64_0.9.5.tar.gz; tar xvzf svgcleaner_linux_x86_64_0.9.5.tar.gz;mv svgcleaner /usr/local/bin + +RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp && chmod 755 /usr/local/bin/yt-dlp + +RUN apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* + +ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true +RUN npm install --unsafe-perm --global uglify-js less sass puppeteer favicons crx3 oslllo-svg-fixer terser npm-check-updates nw-builder@^4 +RUN pip3 install font-line + +RUN groupadd sudo;useradd -d /application -g 33 -G sudo -s /bin/bash -u 1001 toolbox + +CMD exec /usr/bin/startup.sh + +# Open up fcgi port +EXPOSE 9000 +EXPOSE 8123 diff --git a/.docker/syncprodtoalpha.sh b/.docker/syncprodtoalpha.sh new file mode 100644 index 000000000..a48281173 --- /dev/null +++ b/.docker/syncprodtoalpha.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Sync assets & files +rsync -avz --delete --exclude-from /data/toolbox/alpha/.docker/syncprodtodev.exclude --delete-excluded /home/toolbox/www/protected/ /data/toolbox/alpha/protected/ +rsync -avz --delete --exclude-from /data/toolbox/alpha/.docker/syncprodtodev.exclude --delete-excluded /data/toolbox/storage/ /data/toolbox/alpha/storage/ +# Sync database +docker stop fluidbook-toolbox-alpha-mariadb +rm -rf /docker/fluidbook-toolbox-alpha/database/data/* +rsync -avz /docker/fluidbook-toolbox/database/data/ /docker/fluidbook-toolbox-alpha/database/data/ +docker stop fluidbook-toolbox-mariadb +rsync -avz /docker/fluidbook-toolbox/database/data/ /docker/fluidbook-toolbox-alpha/database/data/ +sleep 1 +rsync -avz /docker/fluidbook-toolbox/database/data/ /docker/fluidbook-toolbox-alpha/database/data/ +docker start fluidbook-toolbox-mariadb +# Update and restart dev containers +/docker/fluidbook-toolbox-alpha/update diff --git a/.docker/syncprodtodev.exclude b/.docker/syncprodtodev.exclude index 3583598ab..21e2359e3 100644 --- a/.docker/syncprodtodev.exclude +++ b/.docker/syncprodtodev.exclude @@ -12,3 +12,4 @@ app/public/elearningmedia app/public/elearningpackage app/public/fluidbookcollection app/public/quiz +protected/youtube