1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2025-01-14 14:43:17 +08:00

installing ffmpeg with package manager for docker build

This commit is contained in:
Patrik J. Braun 2019-12-21 18:14:28 +01:00
parent 1863381b79
commit fb99df6157
8 changed files with 166 additions and 17 deletions

View File

@ -22,7 +22,7 @@ jobs:
run: npm install --unsafe-perm
-
name: Create Release
run: npm run create-release
run: npm run create-release -- --skip-opt-packages=ffmpeg,ffprobe
- uses: actions/upload-artifact@v1
with:
name: pigallery2-release

View File

@ -20,8 +20,8 @@ WORKDIR /app
ENTRYPOINT ["npm", "start"]
EXPOSE 80
ENV NODE_ENV=production
COPY --from=builder /build /app
RUN apk add ffmpeg
COPY --from=builder /build /app
RUN ln -s /app/data/config/config.json config.json
VOLUME ["/app/data/config", "/app/data/db", "/app/data/images", "/app/data/tmp"]
HEALTHCHECK --interval=30s --timeout=10s --retries=4 --start-period=60s \

View File

@ -19,6 +19,7 @@ WORKDIR /app
ENTRYPOINT ["npm", "start"]
EXPOSE 80
ENV NODE_ENV=production
RUN apt-get update && apt-get install -y ffmpeg
COPY --from=builder /build /app
RUN ln -s /app/data/config/config.json config.json
VOLUME ["/app/data/config", "/app/data/db", "/app/data/images", "/app/data/tmp"]

View File

@ -3,7 +3,7 @@ import * as fs from 'fs';
import * as zip from 'gulp-zip';
import * as ts from 'gulp-typescript';
// @ts-ignore
import * as jsonModify from 'gulp-json-modify';
import * as jeditor from 'gulp-json-editor';
const exec = require('child_process').exec;
@ -12,6 +12,19 @@ const translationFolder = 'translate';
const tsBackendProject = ts.createProject('tsconfig.json');
declare var process: NodeJS.Process;
const getSwitch = (name: string, def: string = null) => {
name = '--' + name;
for (let i = 0; i < process.argv.length; i++) {
if (process.argv[i].startsWith(name + '=')) {
return process.argv[i].replace(name + '=', '').trim();
}
if (process.argv[i].startsWith(name) && i + 1 < process.argv.length) {
return process.argv[i + 1].trim();
}
}
return def;
};
gulp.task('build-backend', function () {
return gulp.src([
'src/common/**/*.ts',
@ -36,6 +49,7 @@ const createFrontendTask = (type: string, script: string) => {
});
};
const getLanguages = () => {
if (!fs.existsSync('./src/frontend/' + translationFolder)) {
return [];
@ -47,10 +61,8 @@ const getLanguages = () => {
// get languages to filter
let languageFilter: string[] = null;
for (let i = 0; i < process.argv.length; i++) {
if (process.argv[i].startsWith('--languages=')) {
languageFilter = process.argv[i].replace('--languages=', '').split(',');
}
if (getSwitch('languages')) {
languageFilter = getSwitch('languages').split(',');
}
let languages = files.map((f: string) => {
@ -90,6 +102,7 @@ gulp.task('copy-static', function () {
return gulp.src([
'src/backend/model/diagnostics/blank.jpg',
'README.md',
'package-lock.json',
'LICENSE'], {base: '.'})
.pipe(gulp.dest('./release'));
});
@ -97,13 +110,26 @@ gulp.task('copy-static', function () {
gulp.task('copy-package', function () {
return gulp.src([
'package.json'], {base: '.'})
.pipe(jsonModify({
key: 'devDependencies',
value: {}
}))
.pipe(jsonModify({
key: 'scripts',
value: {'start': 'node ./src/backend/index.js'}
.pipe(jeditor((json: {
devDependencies: { [key: string]: string },
scripts: { [key: string]: string },
dependencies: { [key: string]: string },
optionalDependencies: { [key: string]: string }
}) => {
delete json.devDependencies;
json.scripts = {start: 'node ./src/backend/index.js'};
if (getSwitch('skip-opt-packages')) {
const skipPackages = getSwitch('skip-opt-packages').split(',');
for (const pkg of skipPackages) {
for (const key of Object.keys(json.optionalDependencies)) {
if (key.indexOf(pkg) !== -1) {
delete json.optionalDependencies[key];
}
}
}
}
return json;
}))
.pipe(gulp.dest('./release'));
});

122
package-lock.json generated
View File

@ -6521,6 +6521,16 @@
"typedarray": "^0.0.6"
}
},
"config-chain": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
"integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
"dev": true,
"requires": {
"ini": "^1.3.4",
"proto-list": "~1.2.1"
}
},
"connect": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
@ -7185,6 +7195,12 @@
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
"deepmerge": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
"dev": true
},
"default-compare": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
@ -7656,6 +7672,36 @@
"safer-buffer": "^2.1.0"
}
},
"editorconfig": {
"version": "0.15.3",
"resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
"integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
"dev": true,
"requires": {
"commander": "^2.19.0",
"lru-cache": "^4.1.5",
"semver": "^5.6.0",
"sigmund": "^1.0.1"
},
"dependencies": {
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
"lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
}
}
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@ -9957,6 +10003,57 @@
}
}
},
"gulp-json-editor": {
"version": "2.5.4",
"resolved": "https://registry.npmjs.org/gulp-json-editor/-/gulp-json-editor-2.5.4.tgz",
"integrity": "sha512-3IdMYsSACfLFYipet9Rmpag7PEU059KnR6TWgfuAfz+ftyzN8yaEvf9vXAD5b9K9v711Ymcpqe6vWGQYfQJ/uQ==",
"dev": true,
"requires": {
"deepmerge": "^4.2.1",
"detect-indent": "^6.0.0",
"js-beautify": "^1.10.2",
"plugin-error": "^1.0.1",
"through2": "^3.0.1"
},
"dependencies": {
"ansi-colors": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
"integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
"dev": true,
"requires": {
"ansi-wrap": "^0.1.0"
}
},
"detect-indent": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz",
"integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==",
"dev": true
},
"plugin-error": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
"integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==",
"dev": true,
"requires": {
"ansi-colors": "^1.0.1",
"arr-diff": "^4.0.0",
"arr-union": "^3.1.0",
"extend-shallow": "^3.0.2"
}
},
"through2": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
"integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
"dev": true,
"requires": {
"readable-stream": "2 || 3"
}
}
}
},
"gulp-json-modify": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/gulp-json-modify/-/gulp-json-modify-1.0.2.tgz",
@ -11666,6 +11763,19 @@
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.6.tgz",
"integrity": "sha512-MUj2XlMB8kpe+8DJUGH/3UJm4XpI8XEgZQ+CiHDeyrGoKPdW/8FJv6ku+3UiYm5Fz3CWaL+iXmD8Q4Ap6aC1Jw=="
},
"js-beautify": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.2.tgz",
"integrity": "sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ==",
"dev": true,
"requires": {
"config-chain": "^1.1.12",
"editorconfig": "^0.15.3",
"glob": "^7.1.3",
"mkdirp": "~0.5.1",
"nopt": "~4.0.1"
}
},
"js-levenshtein": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
@ -14868,6 +14978,12 @@
"retry": "^0.10.0"
}
},
"proto-list": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
"integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
"dev": true
},
"protoduck": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz",
@ -16204,6 +16320,12 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
"sigmund": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
"integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
"dev": true
},
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",

View File

@ -84,7 +84,7 @@
"core-js": "3.4.7",
"ejs-loader": "0.3.5",
"gulp": "4.0.2",
"gulp-json-modify": "1.0.2",
"gulp-json-editor": "2.5.4",
"gulp-typescript": "5.0.1",
"gulp-zip": "5.0.1",
"hammerjs": "2.0.8",

View File

@ -38,7 +38,7 @@ export function galleryMatcherFunction(
}
return null;
}
// Todo: authguard - canActivate https://angular.io/api/router/CanActivate
const ROUTES: Routes = [
{
path: 'login',

View File

@ -8,7 +8,7 @@ import {ShareService} from '../../ui/gallery/share.service';
@Injectable()
export class UserService {
// Todo use JWT instead of costume cookie
constructor(private _networkService: NetworkService,
private _shareService: ShareService) {
}