From 4e033acf6e0fd86b680826a0c86a6134471357b6 Mon Sep 17 00:00:00 2001 From: mdoryammilwalrus <91034348+mdoryammilwalrus@users.noreply.github.com> Date: Thu, 24 Aug 2023 22:44:53 -0500 Subject: [PATCH] Dockerfile??? --- Dockerfile | 17 +++++++++++++++++ docker-compose.example.yaml | 14 ++++++++++++++ server/src/main.ts | 10 ++++++++-- tracker-list/src/index.ts | 2 ++ 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.example.yaml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5f573c3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM node:18-alpine as build + +WORKDIR /build + +COPY ["./*", "/build"] + +RUN cd server && node esbuild.bundle.js + +FROM node:18-alpine as runtime + +WORKDIR /app + +ENV ADRIFT_IS_DOCKER true + +COPY --from=build ["/build/server/*", "/app"] + +ENTRYPOINT [ "node", "dist/main.js", "--start"] \ No newline at end of file diff --git a/docker-compose.example.yaml b/docker-compose.example.yaml new file mode 100644 index 0000000..2702e19 --- /dev/null +++ b/docker-compose.example.yaml @@ -0,0 +1,14 @@ +services: + adrift: + image: mercuryworkshop/adrift-server + environment: + # You don't have to set this or the type + - ADRIFT_TRACKER: "us-central-1" + - ADRIFT_TYPE: "swarm" + # Only used with "account" type + #- ADRIFT_CREDENTIALS: '{"email": "", "password": ""}' + # Auto update docker image + watchtower: + image: containrrr/watchtower + volumes: + - /var/run/docker.sock:/var/run/docker.sock \ No newline at end of file diff --git a/server/src/main.ts b/server/src/main.ts index bea186f..34b57a1 100644 --- a/server/src/main.ts +++ b/server/src/main.ts @@ -13,10 +13,10 @@ import select from "@inquirer/select"; import boxen from "boxen"; import chalk from "chalk"; -import TrackerList from "tracker-list"; +import TrackerList, { defaultTracker } from "tracker-list"; import fs from "fs"; -import { exit } from "process"; +import { exit, env } from "process"; import { datadir } from "./lib"; import { PROTOCOL_VERSION } from "protocol"; @@ -24,6 +24,12 @@ export const SERVER_MILESTONE = "1.0"; async function config() { + if(env.ADRIFT_IS_DOCKER) return { + /* Default values so users can just docker run the image */ + tracker: env.ADRIFT_TRACKER || defaultTracker, + type: env.ADRIFT_TYPE || "swarm", + credentials: env.ADRIFT_CREDENTIALS ? JSON.parse(env.ADRIFT_CREDENTIALS) : {} + }; let dir = datadir(); if ( diff --git a/tracker-list/src/index.ts b/tracker-list/src/index.ts index 0edd7e0..ca18ae7 100644 --- a/tracker-list/src/index.ts +++ b/tracker-list/src/index.ts @@ -28,3 +28,5 @@ let trackers = { } } as const; export default trackers; + +export const defaultTracker = "us-central-1"; \ No newline at end of file