Initial commit of docker files.

This commit is contained in:
nero120 2018-12-16 23:31:21 +00:00
parent 2b74ae2021
commit 9b56f66c76
8 changed files with 115 additions and 0 deletions

7
.dockerignore Normal file
View file

@ -0,0 +1,7 @@
.env
.git
.gitignore
.travis.yml
.vscode
node_modules
test

4
.env Normal file
View file

@ -0,0 +1,4 @@
COMPOSE_CONVERT_WINDOWS_PATHS=1
XBS_API_HOSTNAME=xbsapi.yourdomain.org
XBS_DB_PASSWORD=xbsdbpass
XBS_DB_USERNAME=xbsdb

0
acme.json Normal file
View file

51
docker-compose.yml Normal file
View file

@ -0,0 +1,51 @@
version: "3.7"
volumes:
xbs-db-data:
services:
db:
container_name: "xbs-db"
environment:
- "MONGO_INITDB_DATABASE=xbrowsersync"
- "MONGO_INITDB_ROOT_PASSWORD=$XBS_DB_PASSWORD"
- "MONGO_INITDB_ROOT_USERNAME=$XBS_DB_USERNAME"
image: "mongo:4.0.4"
labels:
- "traefik.enable=false"
ports:
- "27017:27017"
restart: "always"
volumes:
- "xbs-db-data:/data/db"
- "./mongoconfig.js:/docker-entrypoint-initdb.d/mongoconfig.js"
api:
container_name: "xbs-api"
depends_on:
- "db"
environment:
- "XBROWSERSYNC_DB_PWD=$XBS_DB_PASSWORD"
- "XBROWSERSYNC_DB_USER=$XBS_DB_USERNAME"
image: "xbrowsersync-api:1.1.6"
labels:
- "traefik.frontend.rule=Host:$XBS_API_HOSTNAME"
- "traefik.port=8080"
restart: "always"
volumes:
- "./settings.json:/usr/src/api/config/settings.json"
reverse-proxy:
command: "--api --docker"
container_name: "xbs-reverse-proxy"
depends_on:
- "api"
image: traefik:1.7.5-alpine
labels:
- "traefik.enable=false"
ports:
- "443:443"
- "80:80"
restart: "always"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "./acme.json:/acme.json"
- "./traefik.toml:/traefik.toml"

23
dockerfile Normal file
View file

@ -0,0 +1,23 @@
FROM node:10.14.2-alpine
# Set environment variables
ENV XBROWSERSYNC_API_VERSION 1.1.6
ENV XBROWSERSYNC_API_PORT 8080
ENV XBROWSERSYNC_DB_USER $XBROWSERSYNC_DB_USER
ENV XBROWSERSYNC_DB_PWD $XBROWSERSYNC_DB_PWD
WORKDIR /usr/src/api
# Download release and unpack
RUN wget -q -O release.tar.gz https://github.com/xBrowserSync/API/archive/v$XBROWSERSYNC_API_VERSION.tar.gz \
&& tar -C . -xzf release.tar.gz \
&& rm release.tar.gz \
&& mv API-$XBROWSERSYNC_API_VERSION/* . \
&& rm -rf API-$XBROWSERSYNC_API_VERSION/
# Install dependencies
RUN npm install
# Expose port and start api
EXPOSE $XBROWSERSYNC_API_PORT
CMD [ "node", "dist/api.js"]

2
mongoconfig.js Normal file
View file

@ -0,0 +1,2 @@
db.newsynclogs.createIndex( { "expiresAt": 1 }, { expireAfterSeconds: 0 } );
db.newsynclogs.createIndex( { "ipAddress": 1 } );

5
settings.json Normal file
View file

@ -0,0 +1,5 @@
{
"db": {
"host": "db"
}
}

23
traefik.toml Normal file
View file

@ -0,0 +1,23 @@
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[retry]
[api]
dashboard = false
[acme]
email = "you@yourdomain.org"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"