From 1e363f6c667c8e04efdccf75baa8dc4fddc51c0f Mon Sep 17 00:00:00 2001 From: William Diakite Date: Thu, 24 Jul 2025 13:14:46 -0400 Subject: [PATCH] dockerize app --- .docker-compose.yml | 5 +++++ .dockerignore | 1 + .env.development | 3 +++ .env.production | 3 +++ Dockerfile | 20 ++++++++++++++++++++ docker-compose.yml | 14 ++++++++++++++ package-lock.json | 35 ++++++++++++++++++++++++++++++++++- package.json | 9 +++++++-- 8 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 .docker-compose.yml create mode 100644 .dockerignore create mode 100644 .env.development create mode 100644 .env.production create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.docker-compose.yml b/.docker-compose.yml new file mode 100644 index 0000000..ac80c4b --- /dev/null +++ b/.docker-compose.yml @@ -0,0 +1,5 @@ +services: + cms: + image: alliances-cms + ports: + - "1111:1111" diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..320fc26 --- /dev/null +++ b/.env.development @@ -0,0 +1,3 @@ +TOKEN_SECRET_KEY="a very dark" +DB_CONNECTION=sqlite +DB_PATH=.manifest/db.sqlite diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..c36283d --- /dev/null +++ b/.env.production @@ -0,0 +1,3 @@ +TOKEN_SECRET_KEY="a very dark" +DB_CONNECTION=sqlite +DB_PATH=/app/.manifest/db.sqlite diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bc8a3a0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +# Use the official Node.js image as a base +FROM node:18-slim + +# Copy package.json and package-lock.json (if available) +COPY package*.json ./ + +# Install dependencies +RUN npm install && npm cache clean --force && rm -rf /root/.npm && rm -rf /tmp/* + +# Copy the rest of your application code +COPY . . + +# Set the NODE_ENV environment variable +ENV NODE_ENV=production + +# Expose the port the app runs on (adjust as needed) +EXPOSE 1111 + +# Start the application +CMD ["npm", "run", "start"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6f9882f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +services: + cms: + build: . + image: alliances-cms + ports: + - "1111:1111" + environment: + - NODE_ENV=production + - TOKEN_SECRET_KEY=${TOKEN_SECRET_KEY} + - DB_PATH=${DB_PATH} + env_file: .env.production + volumes: + - ./.manifest:/app/.manifest + diff --git a/package-lock.json b/package-lock.json index ed17ef3..b276f0a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,11 @@ "version": "0.1.0", "license": "UNLICENSED", "dependencies": { - "manifest": "^4.16.2" + "manifest": "^4.16.2", + "sqlite3": "^5.1.7" + }, + "devDependencies": { + "dotenv-cli": "^9.0.0" } }, "node_modules/@aws-crypto/crc32": { @@ -3346,6 +3350,35 @@ "url": "https://dotenvx.com" } }, + "node_modules/dotenv-cli": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/dotenv-cli/-/dotenv-cli-9.0.0.tgz", + "integrity": "sha512-NhGrQum/u1VTBxnSnlNwVkTP3gojYO8T6Fntyru93wbR1hPo8aFhDFJiBPmkT0771i7f5Rd7EQDaOreS8jY8gA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6", + "dotenv": "^17.1.0", + "dotenv-expand": "^10.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "dotenv": "cli.js" + } + }, + "node_modules/dotenv-cli/node_modules/dotenv": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.0.tgz", + "integrity": "sha512-Q4sgBT60gzd0BB0lSyYD3xM4YxrXA9y4uBDof1JNYGzOXrQdQ6yX+7XIAqoFOGQFOTK1D3Hts5OllpxMDZFONQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dotenv-expand": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", diff --git a/package.json b/package.json index 9d5c473..919a71e 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,15 @@ "private": true, "license": "UNLICENSED", "scripts": { + "start:dev": "dotenv -e .env.development -- node node_modules/manifest/scripts/watch/watch.js", "start": "node node_modules/manifest/scripts/watch/watch.js", "seed": "node node_modules/manifest/dist/manifest/src/seed/scripts/seed.js" }, "dependencies": { - "manifest": "^4.16.2" + "manifest": "^4.16.2", + "sqlite3": "^5.1.7" + }, + "devDependencies": { + "dotenv-cli": "^9.0.0" } -} \ No newline at end of file +}