]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6561 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 7 Dec 2023 16:52:55 +0000 (17:52 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 7 Dec 2023 16:52:55 +0000 (17:52 +0100)
.docker/alpha/build.sh [new file with mode: 0644]
.docker/alpha/docker-compose.yml [new file with mode: 0644]
.docker/alpha/update.sh [new file with mode: 0644]
.docker/images/php-alpha/Dockerfile [new file with mode: 0644]
.docker/syncprodtoalpha.sh [new file with mode: 0644]
.docker/syncprodtodev.exclude

diff --git a/.docker/alpha/build.sh b/.docker/alpha/build.sh
new file mode 100644 (file)
index 0000000..a0f159d
--- /dev/null
@@ -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 (file)
index 0000000..aa375b1
--- /dev/null
@@ -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 (file)
index 0000000..a71c10d
--- /dev/null
@@ -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 (file)
index 0000000..3d4bcaa
--- /dev/null
@@ -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 (file)
index 0000000..a482811
--- /dev/null
@@ -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
index 3583598abdbd50ad6313e9edb760f523f2d234bd..21e2359e380305be9a42d5e14b86c007d3c7012c 100644 (file)
@@ -12,3 +12,4 @@ app/public/elearningmedia
 app/public/elearningpackage
 app/public/fluidbookcollection
 app/public/quiz
+protected/youtube