Skip to content

Commit

Permalink
Merge pull request #113 from GCastilho/build/less-docker-hostile
Browse files Browse the repository at this point in the history
build: Improved the Dockerfile to make the project less hostile to use with docker
  • Loading branch information
Joohansson authored Dec 15, 2021
2 parents 56a4b62 + 09c6fab commit 5a5e0f0
Show file tree
Hide file tree
Showing 4 changed files with 147 additions and 4 deletions.
118 changes: 118 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

#NanoNodeProxy Server
db.json
websocket.json
counters.stat
samples.stat
settings.json
token_settings.json
user_settings.json
creds.json
pow_creds.json
request-stat.json

dist/
29 changes: 26 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,20 +1,43 @@
# Build stage #
FROM node:14

WORKDIR /usr/src/app
RUN chown node:node .
USER node

# Prepare environment
COPY ./package*.json ./
COPY ./tsconfig.json ./
RUN npm install
RUN npm ci

# Copy source files
COPY ./src ./src

# Typescript → Javascript
RUN npm run-script build

# Deploy stage #
FROM node:14

WORKDIR /app

# Setup environment variables for docker
ENV CONFIG_CREDS_SETTINGS=/root/creds.json
ENV CONFIG_POW_CREDS_SETTINGS=/root/pow_creds.json
ENV CONFIG_REQUEST_STAT=/root/request-stat.json
ENV CONFIG_SETTINGS=/root/settings.json
ENV CONFIG_TOKEN_SETTINGS=/root/token_settings.json
ENV CONFIG_USER_SETTINGS=/root/user_settings.json
ENV CONFIG_WEBSOCKET_PATH=/root/websocket.json
ENV CONFIG_DB_PATH=/root/db.json

# Install dependencies
COPY ./package*.json ./
RUN npm ci --production

# Copy build files from stage 0
COPY --from=0 /usr/src/app/dist ./dist

VOLUME /root

EXPOSE 9950

CMD [ "node", "dist/proxy.js" ]
2 changes: 2 additions & 0 deletions src/common-settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export interface ConfigPaths {
settings: ConfigPath
user_settings: ConfigPath
websocket_path: ConfigPath
db_path: ConfigPath
}

export function readConfigPathsFromENV(): ConfigPaths {
Expand All @@ -40,5 +41,6 @@ export function readConfigPathsFromENV(): ConfigPaths {
token_settings: process.env.CONFIG_TOKEN_SETTINGS || 'token_settings.json',
user_settings: process.env.CONFIG_USER_SETTINGS || 'user_settings.json',
websocket_path: process.env.CONFIG_WEBSOCKET_PATH || 'websocket.json',
db_path: process.env.CONFIG_DB_PATH || 'db.json',
}
}
2 changes: 1 addition & 1 deletion src/proxy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ const configPaths: ConfigPaths = readConfigPathsFromENV()
const test_override_http = !process.env.OVERRIDE_USE_HTTP

// lowdb init
const order_db: OrderDB = lowdb(new FileSync<OrderSchema>('db.json'))
const order_db: OrderDB = lowdb(new FileSync<OrderSchema>(configPaths.db_path))
const tracking_db: UserDB = lowdb(new FileSync<UserSchema>(configPaths.websocket_path))
order_db.defaults({orders: []}).write()
tracking_db.defaults({users: []}).write()
Expand Down

0 comments on commit 5a5e0f0

Please sign in to comment.