Remove ffmpeg & heic-convert dependencies.

This commit is contained in:
Patrick Fic
2022-11-16 16:10:01 -08:00
parent 32beabccb5
commit 6d0eb32a71
6 changed files with 58 additions and 180 deletions

View File

@@ -15,13 +15,52 @@ RUN npm install
# Bundle app source
COPY . .
RUN apt-get -y update
RUN apt install wget
# PNG ,JPG ,Tiff & WebP support
# Consider adding more support with testing https://gist.github.com/hurricup/e14ae5bc47705fca6b1680e7a1fb6580
RUN apt install -y libjpeg-dev
RUN apt install -y libpng-dev
RUN apt install -y libtiff-dev
RUN apt install -y libwebp-dev
# Install HEIF support (libheic-dev Package does not exist on 16.04)
RUN apt-get -y install libde265-dev
RUN apt-get -y install pkg-config m4 libtool automake autoconf
RUN wget https://github.com/strukturag/libheif/archive/v1.4.0.tar.gz
RUN tar -xvf v1.4.0.tar.gz
WORKDIR /usr/src/app/libheif-1.4.0/
RUN ./autogen.sh
RUN ./configure
RUN make
RUN make install
WORKDIR /usr/src/app
# Install ruby 2.3.0 for ImageMagick
RUN apt-get -y install build-essential zlib1g-dev libssl-dev libreadline6-dev libyaml-dev
RUN apt-get -y install wget && apt-get install -y ruby-full && ruby -v
# Install ImageMagick
# RUN apt-get install imagemagick -y
# # Install ImageMagick with WEBP and HEIC support
RUN wget https://download.imagemagick.org/ImageMagick/download/releases/ImageMagick-7.1.0-52.tar.gz
RUN tar -xvf ImageMagick-7.1.0-52.tar.gz
WORKDIR /usr/src/app/ImageMagick-7.1.0-52/
RUN ./configure --with-heic=yes --with-webp=yes
RUN make
RUN make install
RUN ldconfig /usr/local/lib
RUN identify --version
RUN apt-get update && apt-get install -y \
imagemagick \
graphicsmagick \
ghostscript \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app
RUN npm run build
RUN npm install pm2 -g

View File

@@ -1,24 +1,7 @@
version: '2'
services:
caddy-ims:
image: caddy:latest
container_name: caddy-service
restart: unless-stopped
command: caddy reverse-proxy --from imexmedia.duckdns.org --to ims:8000
networks:
c2_proxy:
ipv4_address: 192.168.90.254
ports:
- 80:80
- 443:443
volumes:
- caddy_data:/data
- caddy_config:/config
ims:
container_name: ims
networks:
- c2_proxy
ports:
- 8000:8000
volumes:
@@ -26,41 +9,7 @@ services:
environment:
- MEDIA_PATH=/media
- DUPLICATE_BILL_TO_VENDOR=false
- IMS_TOKEN=test
- IMS_TOKEN=
- CONVERT_QUALITY=0.5
- KEEP_CONVERTED_ORIGINALS=TRUE
image: imexonline/media-server:beta
restart: unless-stopped
watchtower:
container_name: watchtower-ims
image: containrrr/watchtower
networks:
- c2_proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=America/Vancouver
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_REMOVE_VOLUMES=true
- WATCHTOWER_INCLUDE_STOPPED=true
- WATCHTOWER_INCLUDE_RESTARTING=true
- WATCHTOWER_NO_STARTUP_MESSAGE=false
- WATCHTOWER_REVIVE_STOPPED=true
- WATCHTOWER_ROLLING_RESTART=true
- WATCHTOWER_TIMEOUT=60s
- WATCHTOWER_POLL_INTERVAL=3600
restart: unless-stopped
volumes:
ims:
caddy_data:
caddy_config:
networks:
c2_proxy:
name: c2_proxy
driver: bridge
ipam:
config:
- subnet: 192.168.90.0/24
image: imexonline/media-server:beta

View File

@@ -17,11 +17,9 @@
"cors": "^2.8.5",
"dotenv": "10.0.0",
"express": "^4.17.3",
"ffmpeg-static": "^5.0.0",
"file-type": "^16.5.3",
"fs-extra": "^10.1.0",
"gm": "^1.23.1",
"heic-convert": "^1.2.4",
"helmet": "^5.0.2",
"image-thumbnail": "^1.0.14",
"jszip": "^3.10.0",

View File

@@ -8,7 +8,7 @@ import path from "path";
import { logger } from "../server";
import { AssetPaths, FolderPaths } from "./serverInit";
const simpleThumb = require("simple-thumbnail");
const ffmpeg = require("ffmpeg-static");
//const ffmpeg = require("ffmpeg-static");
var Bluebird = require("bluebird");
@@ -43,7 +43,7 @@ export default async function GenerateThumbnail(
await GeneratePdfThumbnail(file, thumbPath);
} else if (type?.mime.startsWith("video")) {
await simpleThumb(file, thumbPath, "250x?", {
path: ffmpeg,
// path: ffmpeg,
});
} else {
logger.debug("Thumbnail being created for : " + thumbPath);
@@ -97,7 +97,7 @@ export async function GenerateOptimized(
await GeneratePdfThumbnail(file, thumbPath);
} else if (type?.mime.startsWith("video")) {
await simpleThumb(file, thumbPath, "250x?", {
path: ffmpeg,
// path: ffmpeg,
});
} else {
logger.debug("Optimized image being created for : " + thumbPath);

View File

@@ -1,5 +1,3 @@
import fs from "fs-extra";
import dotenv from "dotenv";
@@ -9,7 +7,9 @@ import path, { resolve } from "path";
import { logger } from "../server";
import { FolderPaths } from "./serverInit";
const heicConverter = require("heic-convert");
//const heicConverter = require("heic-convert");
import gm from "gm";
var imageMagick = gm.subClass({ imageMagick: true });
//gm.subClass();
dotenv.config({
@@ -59,10 +59,12 @@ export async function ConvertHeicFiles(files: Express.Multer.File[]) {
async function ConvertToJpeg(file: string, newPath: string) {
const fileOnDisk: Buffer = await fs.readFile(file);
const outputBuffer = await heicConverter({
buffer: fileOnDisk, // the HEIC file buffer
format: "JPEG", // output format
quality: process.env.CONVERT_QUALITY || 0.5, // the jpeg compression quality, between 0 and 1
return new Promise<string>((resolve, reject) => {
const result = imageMagick(fileOnDisk)
.setFormat("jpg")
.write(newPath, (error) => {
if (error) reject(error.message);
resolve(newPath);
});
});
return await fs.writeFile(newPath, outputBuffer);
}

112
yarn.lock
View File

@@ -28,16 +28,6 @@
enabled "2.0.x"
kuler "^2.0.0"
"@derhuerst/http-basic@^8.2.0":
version "8.2.2"
resolved "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.2.tgz"
integrity sha512-ek065nW95mleLHo8vZ+ob7QTQPNOwDEjCe27BX2flme/UTu9z2mD1uRRPko38u7al4tTZADMtozpll8PQHAZgg==
dependencies:
caseless "^0.12.0"
concat-stream "^1.6.2"
http-response-object "^3.0.1"
parse-cache-control "^1.0.1"
"@sindresorhus/is@^0.14.0":
version "0.14.0"
resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz"
@@ -159,11 +149,6 @@
resolved "https://registry.npmjs.org/@types/node/-/node-16.11.32.tgz"
integrity sha512-+fnfNvG5JQdC1uGZiTx+0QVtoOHcggy6+epx65JYroPGsE1uhp+vo5kioiGKsAkor6ocwHteU2EvO7N8vtOZtA==
"@types/node@^10.0.3":
version "10.17.60"
resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz"
integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==
"@types/qs@*":
version "6.9.7"
resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz"
@@ -213,13 +198,6 @@ acorn@^8.4.1:
resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz"
integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
agent-base@6:
version "6.0.2"
resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz"
integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
dependencies:
debug "4"
ansi-align@^3.0.0:
version "3.0.1"
resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz"
@@ -444,11 +422,6 @@ camelcase@^6.2.0:
resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
caseless@^0.12.0:
version "0.12.0"
resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz"
integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
chalk@^4.1.0:
version "4.1.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
@@ -552,7 +525,7 @@ concat-map@0.0.1:
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
concat-stream@^1.5.2, concat-stream@^1.6.2:
concat-stream@^1.5.2:
version "1.6.2"
resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz"
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@@ -639,13 +612,6 @@ debug@2.6.9:
dependencies:
ms "2.0.0"
debug@4:
version "4.3.4"
resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
debug@^3.1.0, debug@^3.2.7:
version "3.2.7"
resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
@@ -769,11 +735,6 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1:
dependencies:
once "^1.4.0"
env-paths@^2.2.0:
version "2.2.1"
resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz"
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
escape-goat@^2.0.0:
version "2.1.1"
resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz"
@@ -836,16 +797,6 @@ fecha@^4.2.0:
resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz"
integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
ffmpeg-static@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-5.0.0.tgz"
integrity sha512-z96jGVa8uCVMnyrTvbDZe0d5zbvIVQnfBN+vKDZoVK+ssYpfUJGEmo2DkuY43CA9Ytlsk+5ZVTFTqzvKw1gSaA==
dependencies:
"@derhuerst/http-basic" "^8.2.0"
env-paths "^2.2.0"
https-proxy-agent "^5.0.0"
progress "^2.0.3"
file-stream-rotator@^0.6.1:
version "0.6.1"
resolved "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz"
@@ -1046,22 +997,6 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
heic-convert@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/heic-convert/-/heic-convert-1.2.4.tgz#605820f98ace3949a40fc7b263ee0bc573a0176b"
integrity sha512-klJHyv+BqbgKiCQvCqI9IKIvweCcohDuDl0Jphearj8+16+v8eff2piVevHqq4dW9TK0r1onTR6PKHP1I4hdbA==
dependencies:
heic-decode "^1.1.2"
jpeg-js "^0.4.1"
pngjs "^3.4.0"
heic-decode@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/heic-decode/-/heic-decode-1.1.2.tgz#974701666432e31ed64b2263a1ece7cff5218209"
integrity sha512-UF8teegxvzQPdSTcx5frIUhitNDliz/9Pui0JFdIqVRE00spVE33DcCYtZqaLNyd4y5RP/QQWZFIc1YWVKKm2A==
dependencies:
libheif-js "^1.10.0"
helmet@^5.0.2:
version "5.1.0"
resolved "https://registry.npmjs.org/helmet/-/helmet-5.1.0.tgz"
@@ -1083,21 +1018,6 @@ http-errors@2.0.0:
statuses "2.0.1"
toidentifier "1.0.1"
http-response-object@^3.0.1:
version "3.0.2"
resolved "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz"
integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==
dependencies:
"@types/node" "^10.0.3"
https-proxy-agent@^5.0.0:
version "5.0.1"
resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
dependencies:
agent-base "6"
debug "4"
iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
@@ -1268,11 +1188,6 @@ isexe@^2.0.0:
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
jpeg-js@^0.4.1:
version "0.4.3"
resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.3.tgz#6158e09f1983ad773813704be80680550eff977b"
integrity sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==
json-buffer@3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz"
@@ -1316,11 +1231,6 @@ latest-version@^5.1.0:
dependencies:
package-json "^6.3.0"
libheif-js@^1.10.0:
version "1.12.0"
resolved "https://registry.yarnpkg.com/libheif-js/-/libheif-js-1.12.0.tgz#9ad1ed16a8e6412b4d3d83565d285465a00e7305"
integrity sha512-hDs6xQ7028VOwAFwEtM0Q+B2x2NW69Jb2MhQFUbk3rUrHzz4qo5mqS8VrqNgYnSc8TiUGnR691LnO4uIfEE23w==
lie@~3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
@@ -1463,11 +1373,6 @@ ms@2.0.0:
resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
ms@2.1.2:
version "2.1.2"
resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@2.1.3, ms@^2.1.1:
version "2.1.3"
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
@@ -1630,11 +1535,6 @@ pako@~1.0.2:
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
parse-cache-control@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz"
integrity sha1-juqz5U+laSD+Fro493+iGqzC104=
parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
@@ -1655,11 +1555,6 @@ picomatch@^2.0.4, picomatch@^2.2.1:
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pngjs@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f"
integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==
prebuild-install@^6.1.2:
version "6.1.4"
resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz"
@@ -1689,11 +1584,6 @@ process-nextick-args@~2.0.0:
resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
progress@^2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
proxy-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"