diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..6ed48a9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.env +node_modules diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..e5d35de --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,8 @@ +FROM node:lts-alpine + +COPY --from=ghcr.io/ufoscout/docker-compose-wait:latest /wait /wait + +ADD ./ /app +WORKDIR /app +RUN npm install +EXPOSE 8080 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..f4417ca --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,47 @@ +services: + meshtastic-mqtt: + container_name: meshtastic-mqtt + depends_on: + - mariadb + build: + context: .. + dockerfile: docker/Dockerfile + command: /app/docker/mqtt.sh + links: + - mariadb + env_file: + - ../.env + + meshmap: + container_name: meshmap + depends_on: + - mariadb + build: + context: .. + dockerfile: docker/Dockerfile + command: /app/docker/webapp.sh + ports: + - 8080:8080/tcp + links: + - mariadb + env_file: + - ../.env + + mariadb: + container_name: mariadb + image: bitnami/mariadb + ports: + - 3306:3306/tcp + env_file: + - ../.env + volumes: + - mariadb_data:/bitnami/mariadb + healthcheck: + test: ['CMD', '/opt/bitnami/scripts/mariadb/healthcheck.sh'] + interval: 15s + timeout: 5s + retries: 6 + start_interval: 5s + +volumes: + mariadb_data: diff --git a/docker/mqtt.sh b/docker/mqtt.sh new file mode 100755 index 0000000..34eb1bb --- /dev/null +++ b/docker/mqtt.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +echo "Waiting for mysql" +/wait || exit 111 + +echo "Running migrations" +npx prisma migrate dev + +echo "Starting mqtt listener" +exec node src/mqtt.js ${MESHMAP_MQTT_OPTS} diff --git a/docker/webapp.sh b/docker/webapp.sh new file mode 100755 index 0000000..87af090 --- /dev/null +++ b/docker/webapp.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +echo "Waiting for mysql" +/wait || exit 111 + +echo "Running migrations" +npx prisma migrate dev + +echo "Starting webapp" +exec node src/index.js