Add Dockerfile
This commit is contained in:
parent
4728da18a6
commit
d12455bfd7
64
Dockerfile
Normal file
64
Dockerfile
Normal file
|
@ -0,0 +1,64 @@
|
|||
FROM node:alpine AS builder
|
||||
|
||||
WORKDIR /opt/mx-puppet-vk
|
||||
|
||||
# run build process as user in case of npm pre hooks
|
||||
# pre hooks are not executed while running as root
|
||||
RUN chown node:node /opt/mx-puppet-vk
|
||||
RUN apk --no-cache add git python3 make g++ pkgconfig \
|
||||
build-base \
|
||||
cairo-dev \
|
||||
jpeg-dev \
|
||||
pango-dev \
|
||||
musl-dev \
|
||||
giflib-dev \
|
||||
pixman-dev \
|
||||
pangomm-dev \
|
||||
libjpeg-turbo-dev \
|
||||
freetype-dev
|
||||
|
||||
#RUN wget -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
|
||||
# wget -O glibc-2.32-r0.apk https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-2.32-r0.apk && \
|
||||
# apk add glibc-2.32-r0.apk
|
||||
|
||||
COPY package.json ./
|
||||
RUN chown node:node package.json
|
||||
|
||||
USER node
|
||||
|
||||
RUN npm install
|
||||
|
||||
COPY tsconfig.json ./
|
||||
COPY src/ ./src/
|
||||
RUN npm run build
|
||||
|
||||
|
||||
FROM node:alpine
|
||||
|
||||
VOLUME /data
|
||||
|
||||
ENV CONFIG_PATH=/data/config.yaml \
|
||||
REGISTRATION_PATH=/data/vk-registration.yaml
|
||||
|
||||
# su-exec is used by docker-run.sh to drop privileges
|
||||
RUN apk add --no-cache su-exec \
|
||||
cairo \
|
||||
jpeg \
|
||||
pango \
|
||||
musl \
|
||||
giflib \
|
||||
pixman \
|
||||
pangomm \
|
||||
libjpeg-turbo \
|
||||
freetype
|
||||
|
||||
|
||||
WORKDIR /opt/mx-puppet-vk
|
||||
COPY docker-run.sh ./
|
||||
COPY --from=builder /opt/mx-puppet-vk/node_modules/ ./node_modules/
|
||||
COPY --from=builder /opt/mx-puppet-vk/build/ ./build/
|
||||
|
||||
# change workdir to /data so relative paths in the config.yaml
|
||||
# point to the persisten volume
|
||||
WORKDIR /data
|
||||
ENTRYPOINT ["/opt/mx-puppet-vk/docker-run.sh"]
|
38
docker-run.sh
Executable file
38
docker-run.sh
Executable file
|
@ -0,0 +1,38 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
if [ ! -f "$CONFIG_PATH" ]; then
|
||||
echo 'No config found'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
args="$@"
|
||||
|
||||
if [ ! -f "$REGISTRATION_PATH" ]; then
|
||||
echo 'No registration found, generating now'
|
||||
args="-r"
|
||||
fi
|
||||
|
||||
|
||||
# if no --uid is supplied, prepare files to drop privileges
|
||||
if [ "$(id -u)" = 0 ]; then
|
||||
chown node:node /data
|
||||
|
||||
if find *.db > /dev/null 2>&1; then
|
||||
# make sure sqlite files are writeable
|
||||
chown node:node *.db
|
||||
fi
|
||||
if find *.log.* > /dev/null 2>&1; then
|
||||
# make sure log files are writeable
|
||||
chown node:node *.log.*
|
||||
fi
|
||||
|
||||
su_exec='su-exec node:node'
|
||||
else
|
||||
su_exec=''
|
||||
fi
|
||||
|
||||
# $su_exec is used in case we have to drop the privileges
|
||||
exec $su_exec /usr/local/bin/node '/opt/mx-puppet-vk/build/index.js' \
|
||||
-c "$CONFIG_PATH" \
|
||||
-f "$REGISTRATION_PATH" \
|
||||
$args
|
|
@ -4,8 +4,8 @@
|
|||
"description": "Matrix <-> VK bridge based on mx-puppet-bridge and VK-IO.",
|
||||
"main": "index.js",
|
||||
"repository": {
|
||||
"type" : "git",
|
||||
"url" : "https://github.com/innereq/mx-puppet-vk.git"
|
||||
"type": "git",
|
||||
"url": "https://github.com/innereq/mx-puppet-vk.git"
|
||||
},
|
||||
"license": "AGPL-3.0-only",
|
||||
"scripts": {
|
||||
|
@ -23,7 +23,7 @@
|
|||
"showdown": "^1.9.1",
|
||||
"tslint": "^5.17.0",
|
||||
"typescript": "^4.3.4",
|
||||
"vk-io": "^4.3.1"
|
||||
"vk-io": "^4.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^12.20.15",
|
||||
|
|
Loading…
Reference in a new issue