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:
parent
1863381b79
commit
fb99df6157
2
.github/workflows/blank.yml
vendored
2
.github/workflows/blank.yml
vendored
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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"]
|
||||
|
50
gulpfile.ts
50
gulpfile.ts
@ -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
122
package-lock.json
generated
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -38,7 +38,7 @@ export function galleryMatcherFunction(
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Todo: authguard - canActivate https://angular.io/api/router/CanActivate
|
||||
const ROUTES: Routes = [
|
||||
{
|
||||
path: 'login',
|
||||
|
@ -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) {
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user