Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cad203a7c0 | |||
| 8cafe6e164 | |||
| 99cc14532c | |||
| 13ec1a72e9 | |||
| 1194fc63c6 | |||
| 574b6e1e07 |
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GitToolBoxProjectSettings">
|
||||
<option name="commitMessageValidationOverride">
|
||||
<BoolValueOverride>
|
||||
<option name="value" value="true" />
|
||||
</BoolValueOverride>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
@@ -53,7 +53,7 @@ All environment variables have sensible defaults and, thus, are *not* required t
|
||||
| TZ | Set the container's time zone. NO impact on runtime, included for convenience. | Etc/UTC |
|
||||
| LR_PORT | Port over which Livereload will communicate. All clients presently expect port 35729, so I suggest leaving this alone. | 35729 |
|
||||
| LR_EXTS | Defines monitored extensions. | html,xml,css,js,jsx,ts,tsx,php,py |
|
||||
| LR_EXCLUDE | Array of JavaScript regular-expressions (Regex) that define paths or files to ignore. These are *appended* to the node-livereload upstream defaults which ignore everything in the `.git/`, `.svn/` and `.hg/` directories.<br />JavaScript regex format is: `/your-regex/`<br />**N.B.** At present, exclusions do not seem to be working properly. I’ve filed an issue upstream and will update the container when it’s resolved. | /\\.vscode//,/\\.idea//,/\\.tmp/,/\\.swp/ |
|
||||
| LR_EXCLUDE | Comma-delimited regular-expressions (Regex) that define paths or files to ignore. These are *appended* to the node-livereload upstream defaults which ignore everything in the `.git/`, `.svn/` and `.hg/` directories.<br />**N.B.** You do *not* have to use JavaScript format. The script will automatically convert things to JS-RegEx. You do, however, need to escape any special characters. | .vscode/,.idea/,.tmp$,.swp$/ |
|
||||
| LR_DELAY | Time (ms) between polling for changed files. | 500 |
|
||||
| LR_DEBUG | Print informational messages to the console. Allows you to see Livereload working. | true |
|
||||
| LR_HTTPS | Use HTTPS and WSS. In other words, use a certificate for SSL/TLS operation. | true |
|
||||
@@ -103,6 +103,8 @@ docker run -d --rm -v /var/www:/watch:ro -e LR_HTTPS=false -p 35729:35729 asifba
|
||||
- `-p 35729:35729`: map on all interfaces port 35729 on the host --> port 35729 in container
|
||||
- `listen`: start the Livereload server
|
||||
|
||||
> Depending on your environment, you may *not* want to expose your Livereload server on all interfaces! You may want to map your port to something like `127.0.0.1:35729:35729` and then establishing an SSH-tunnel from your client. This is completely dependent on your environment and beyond the scope of this readme, sorry.
|
||||
|
||||
### Run in HTTPS mode with supplied certificate
|
||||
|
||||
```bash
|
||||
|
||||
+17
-10
@@ -4,6 +4,8 @@
|
||||
ARG NODE_VERSION=16
|
||||
ARG ALPINE_VERSION=3.14
|
||||
FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION}
|
||||
ARG NODE_VERSION
|
||||
ARG ALPINE_VERSION
|
||||
|
||||
# create new node user with set UID and GID from build-args and create volume directories
|
||||
ARG NODE_UID=9999
|
||||
@@ -21,17 +23,22 @@ EXPOSE 35729
|
||||
|
||||
# add tini, timezone support and create certificate directories
|
||||
RUN apk --update --no-cache add \
|
||||
tini \
|
||||
tzdata \
|
||||
openssl
|
||||
tini \
|
||||
tzdata \
|
||||
openssl \
|
||||
&& apk --update --no-cache upgrade
|
||||
|
||||
# labels
|
||||
MAINTAINER Asif Bacchus <asif@asifbacchus.dev>
|
||||
LABEL maintainer="Asif Bacchus <asif@asifbacchus.dev>"
|
||||
LABEL dev.asifbacchus.docker.internalName="node-livereload-tls"
|
||||
LABEL org.opencontainers.image.authors="Asif Bacchus <asif@asifbacchus.dev>"
|
||||
LABEL org.opencontainers.image.title="node-livereload-tls"
|
||||
LABEL org.opencontainers.image.description="Dockerized node-livereload supporting TLS and running under limited user account. Environment variables allow specifying files to watch/exclude and notification delay."
|
||||
LABEL org.opencontainers.image.url="https://git.asifbacchus.dev/ab-docker/livereload"
|
||||
LABEL org.opencontainers.image.documentation="https://git.asifbacchus.dev/ab-docker/livereload/raw/branch/master/README.md"
|
||||
LABEL org.opencontainers.image.source="https://git.asifbacchus.dev/ab-docker/livereload.git"
|
||||
LABEL org.opencontainers.image.title="node-livereload-tls"
|
||||
LABEL org.opencontainers.image.url="https://git.asifbacchus.dev/ab-docker/livereload"
|
||||
LABEL org.opencontainers.image.vendor="NODE.js, node-livereload"
|
||||
|
||||
# default environment variables
|
||||
ENV NODE_ENV=production
|
||||
@@ -40,7 +47,7 @@ ENV PATH=/home/node/.npm-global/bin:$PATH
|
||||
ENV TZ="Etc/UTC"
|
||||
ENV LR_PORT=35729
|
||||
ENV LR_EXTS="html,xml,css,js,jsx,ts,tsx,php,py"
|
||||
ENV LR_EXCLUDE=".git/,.svn/,.vscode/,.idea/"
|
||||
ENV LR_EXCLUDE=".vscode/,.idea/,.tmp$,.swp$"
|
||||
ENV LR_DELAY=500
|
||||
ENV LR_DEBUG=true
|
||||
ENV LR_HTTPS=true
|
||||
@@ -78,11 +85,11 @@ ENTRYPOINT [ "/sbin/tini", "--", "/usr/local/bin/entrypoint.sh" ]
|
||||
|
||||
# set build timestamp and version labels
|
||||
ARG INTERNAL_VERSION
|
||||
ARG GIT_COMMIT
|
||||
ARG BUILD_DATE
|
||||
LABEL org.opencontainers.image.version="16.5.0, 0.9.3"
|
||||
LABEL org.opencontainers.image.vendor="NODE.js, node-livereload"
|
||||
LABEL dev.asifbacchus.image.name="node-livereload-tls"
|
||||
LABEL dev.asifbacchus.image.version=${INTERNAL_VERSION}
|
||||
LABEL org.opencontainers.image.version="NODE=${NODE_VERSION}, node-livereload=0.9.3"
|
||||
LABEL dev.asifbacchus.docker.internalVersion=${INTERNAL_VERSION}
|
||||
LABEL org.opencontainers.image.revision=${GIT_COMMIT}
|
||||
LABEL org.opencontainers.image.created=${BUILD_DATE}
|
||||
|
||||
#EOF
|
||||
|
||||
+13
-8
@@ -1,6 +1,5 @@
|
||||
// implement node-livereload over an HTTPS connection
|
||||
// implement node-livereload over an HTTP or HTTPS connection
|
||||
|
||||
// healthcheck function
|
||||
function healthcheck() {
|
||||
const express = require('express');
|
||||
const http = require('http');
|
||||
@@ -8,12 +7,12 @@ function healthcheck() {
|
||||
const app = express();
|
||||
const router = express.Router();
|
||||
|
||||
router.use((req, res, next) =>{
|
||||
router.use((req, res, next) => {
|
||||
res.header('Access-Control-Allow-Methods', 'GET');
|
||||
next();
|
||||
});
|
||||
|
||||
router.get('/health', (req, res) =>{
|
||||
router.get('/health', (req, res) => {
|
||||
res.status(200).send('Ok');
|
||||
});
|
||||
|
||||
@@ -23,17 +22,23 @@ function healthcheck() {
|
||||
hServer.listen(3000);
|
||||
}
|
||||
|
||||
// load livereload module
|
||||
// load modules
|
||||
const livereload = require('livereload');
|
||||
const fs = require('fs');
|
||||
|
||||
// process from environment variable as array and convert elements to RegEx objects
|
||||
const extraExclusions = process.env.LR_EXCLUDE.split(",");
|
||||
extraExclusions.forEach((exclusion, idx) => {
|
||||
extraExclusions[idx] = new RegExp(exclusion);
|
||||
});
|
||||
|
||||
// set createServer options
|
||||
const fs = require('fs');
|
||||
const options = {
|
||||
port: process.env.LR_PORT,
|
||||
exts: process.env.LR_EXTS,
|
||||
exclusions: process.env.LR_EXCLUDE,
|
||||
exclusions: extraExclusions,
|
||||
usePolling: true,
|
||||
delay: process.env.LR_DELAY,
|
||||
delay: process.env.LR_DELAY
|
||||
};
|
||||
|
||||
// set debugging output as per LR_DEBUG
|
||||
|
||||
Reference in New Issue
Block a user