Add docker configurations for deployment
This commit is contained in:
parent
89db13a8be
commit
5348320772
29
Dockerfile
Normal file
29
Dockerfile
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
FROM node:10.11-alpine
|
||||||
|
LABEL maintainer="Tanguy Herbron <tanguy.herbron@outlook.com>"
|
||||||
|
|
||||||
|
ARG CRONICLE_VERSION='0.8.57'
|
||||||
|
|
||||||
|
RUN apk add --no-cache git curl wget perl bash perl-pathtools tar \
|
||||||
|
procps tini
|
||||||
|
|
||||||
|
RUN adduser cronicle -D -h /opt/cronicle
|
||||||
|
|
||||||
|
USER cronicle
|
||||||
|
|
||||||
|
WORKDIR /opt/cronicle/
|
||||||
|
|
||||||
|
RUN mkdir -p data logs plugins
|
||||||
|
RUN chown cronicle:cronicle data logs plugins
|
||||||
|
|
||||||
|
RUN curl -L "https://github.com/jhuckaby/Cronicle/archive/v${CRONICLE_VERSION}.tar.gz" | tar zxvf - --strip-components 1 && \
|
||||||
|
npm install && \
|
||||||
|
node bin/build.js dist
|
||||||
|
|
||||||
|
ADD entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
EXPOSE 3012
|
||||||
|
|
||||||
|
ENTRYPOINT ["/sbin/tini", "--"]
|
||||||
|
|
||||||
|
CMD ["sh", "/entrypoint.sh"]
|
||||||
|
|
20
docker-compose.yml
Normal file
20
docker-compose.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
version: "3.2"
|
||||||
|
|
||||||
|
services:
|
||||||
|
cronicle:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
hostname: localhost
|
||||||
|
ports:
|
||||||
|
- 3012:3012
|
||||||
|
environment:
|
||||||
|
- CRONICLE_base_app_url=http://localhost:3012
|
||||||
|
- CRONICLE_WebServer__http_port=3012
|
||||||
|
- CRONICLE_WebServer__https_port=443
|
||||||
|
- CRONICLE_web_socket_use_hostnames=1
|
||||||
|
- CRONICLE_server_comm_use_hostnames=1
|
||||||
|
- CRONICLE_web_direct_connect=0
|
||||||
|
- CRONICLE_SETUP=true
|
||||||
|
volumes:
|
||||||
|
- ./data:/opt/cronicle/data:rw
|
||||||
|
- ./logs:/opt/cronicle/logs:rw
|
40
entrypoint.sh
Normal file
40
entrypoint.sh
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ROOT_DIR=/opt/cronicle
|
||||||
|
CONF_DIR=$ROOT_DIR/conf
|
||||||
|
BIN_DIR=$ROOT_DIR/bin
|
||||||
|
LIB_DIR=$ROOT_DIR/lib
|
||||||
|
# DATA_DIR needs to be the same as the exposed Docker volume in Dockerfile
|
||||||
|
DATA_DIR=$ROOT_DIR/data
|
||||||
|
# PLUGINS_DIR needs to be the same as the exposed Docker volume in Dockerfile
|
||||||
|
PLUGINS_DIR=$ROOT_DIR/plugins
|
||||||
|
|
||||||
|
# The env variables below are needed for Docker and cannot be overwritten
|
||||||
|
export CRONICLE_Storage__Filesystem__base_dir=${DATA_DIR}
|
||||||
|
export NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt
|
||||||
|
export CRONICLE_echo=1
|
||||||
|
export CRONICLE_foreground=1
|
||||||
|
|
||||||
|
# Only run setup when setup needs to be done
|
||||||
|
if [ "$CRONICLE_SETUP" = true ] && [ ! -f $DATA_DIR/.setup_done ]
|
||||||
|
then
|
||||||
|
$BIN_DIR/control.sh setup
|
||||||
|
|
||||||
|
cp $CONF_DIR/config.json $CONF_DIR/config.json.origin
|
||||||
|
|
||||||
|
if [ -f $DATA_DIR/config.json.import ]
|
||||||
|
then
|
||||||
|
# Move in custom configuration
|
||||||
|
cp $DATA_DIR/config.json.import $CONF_DIR/config.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create plugins directory
|
||||||
|
mkdir -p $PLUGINS_DIR
|
||||||
|
|
||||||
|
# Marking setup done
|
||||||
|
touch $DATA_DIR/.setup_done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run cronicle
|
||||||
|
/usr/local/bin/node "$LIB_DIR/main.js"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user