commit c7dabda1453ce9e21ace9c27fe29c6da91e8a094 Author: djpbessems Date: Thu Jan 20 14:49:37 2022 +0100 Delete commit history diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..3f804aa --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.lowdefy/** +.env +.drone.yml \ No newline at end of file diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..c788d67 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,35 @@ +kind: pipeline +type: kubernetes +name: Harbor + +steps: +- name: build & publish + image: plugins/docker + context: . + settings: + repo: bv11-cr01.bessems.eu/library/lowdefy + registry: bv11-cr01.bessems.eu + mtu: 1450 + tags: latest + username: + from_secret: harbor_username + password: + from_secret: harbor_password + +--- +kind: pipeline +type: kubernetes +name: Dockerhub + +steps: +- name: build & publish + image: plugins/docker + context: . + settings: + repo: djpbessems/lowdefy + mtu: 1450 + tags: latest + username: + from_secret: docker_username + password: + from_secret: docker_password diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..70188ce --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM node:14-buster AS build + +# Set working directory and node user +WORKDIR /home/node/lowdefy + +RUN chown node:node /home/node/lowdefy + +USER node + +# Copy app config and change ownership of files to "node" user +COPY --chown=node:node . . + +# Build the Lowdefy config using the Lowdefy CLI +RUN npx lowdefy@3.23.2 build + +# Use the correct Lowdefy base image +FROM lowdefy/lowdefy:3.23.2 + +# Copy build output from build stage +COPY --from=build --chown=node:node /home/node/lowdefy/.lowdefy/build ./build + +# Copy contents of public directory into image +COPY --chown=node:node ./public ./public + +# Run the server on start +CMD ["node", "./dist/server.js"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..10f3f7d --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Docker.Containers.Lowdefy + diff --git a/deploy.yaml b/deploy.yaml new file mode 100644 index 0000000..e8e1856 --- /dev/null +++ b/deploy.yaml @@ -0,0 +1,210 @@ +id: deploy +type: PageHeaderMenu +properties: + title: Deploy + +layout: + contentJustify: center + +areas: + content: + blocks: + - id: content + type: Card + layout: + size: 1000 + contentGutter: 10 + blocks: + - id: title + type: Title + layout: + span: 24 + properties: + content: Deploy + - id: leftcolumn + type: Box + layout: + span: 12 + contentGutter: 10 + blocks: + - id: macaddress + required: true + type: TextInput + properties: + title: MAC Address + placeholder: 00:00:00:00:00:00 + validate: + - status: error + message: Enter a valid MAC address + pass: + _regex: ^(?!(?:00[:-]){5}00)((?:[0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2})$ + - id: projectname + type: TextInput + properties: + title: Project name + - id: hostname + required: true + type: TextInput + properties: + title: Hostname + label: + extra: Can only contain alphanumeric characters and hyphens; must be between 1 and 15 characters long + extraStyle: + font-size: smaller + font-style: italic + validate: + - status: error + message: Enter a valid hostname + pass: + _regex: ^([a-zA-Z0-9]{1,15}|[a-zA-Z0-9][a-zA-Z0-9\-]{0,13}[a-zA-Z0-9])$ + - id: ipaddress + required: true + type: TextInput + properties: + title: IP address + placeholder: 0.0.0.0 + validate: + - status: error + message: Enter a valid IP address + pass: + _regex: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ + - id: subnetmask + required: true + type: TextInput + properties: + title: Subnet mask + placeholder: 255.255.255.0 + validate: + - status: error + message: Enter a valid subnet mask + pass: + _regex: ^(?:(255|254|252|248|240|224|192|128|0+)(?:\.(?!$)|$)){4}$ + - id: gateway + required: true + type: TextInput + properties: + title: Gateway + placeholder: 0.0.0.0 + validate: + - status: error + message: Enter a valid IP address + pass: + _regex: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ + - id: dnsserver + required: true + type: TextInput + properties: + title: DNS server + placeholder: 1.1.1.1, 1.0.0.1 + label: + extra: (comma-separated list of IP addresses) + extraStyle: + font-size: smaller + font-style: italic + validate: + - status: error + message: Enter one or more valid IP addresses, separated by a comma + pass: + _regex: ^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?))(?:,\s*(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)))*$ + - id: dnssuffix + required: true + type: TextInput + properties: + title: DNS suffix + placeholder: example.org + validate: + - status: error + message: Enter a valid domain name + pass: + _regex: (?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?