diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a59a775 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,23 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/charts +**/docker-compose* +**/compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +README.md diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2e71105 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "configurations": [ + { + "name": "Docker Node.js Launch", + "type": "docker", + "request": "launch", + "preLaunchTask": "docker-run: debug", + "platform": "node" + } + ] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..ef433b1 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,35 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "docker-build", + "label": "docker-build", + "platform": "node", + "dockerBuild": { + "dockerfile": "${workspaceFolder}/Dockerfile", + "context": "${workspaceFolder}", + "pull": true + } + }, + { + "type": "docker-run", + "label": "docker-run: release", + "dependsOn": ["docker-build"], + "platform": "node" + }, + { + "type": "docker-run", + "label": "docker-run: debug", + "dependsOn": ["docker-build"], + "dockerRun": { + "env": { + "DEBUG": "*", + "NODE_ENV": "development" + } + }, + "node": { + "enableDebugging": true + } + } + ] +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..86721ce --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM node:lts-alpine +ENV NODE_ENV=production +WORKDIR /usr/src/app +COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"] +RUN npm install --silent && mv node_modules ../ +COPY . . +EXPOSE 5000 +RUN chown -R node /usr/src/app +USER node +CMD ["npm", "start"] diff --git a/docker-compose.debug.yml b/docker-compose.debug.yml new file mode 100644 index 0000000..1c5c953 --- /dev/null +++ b/docker-compose.debug.yml @@ -0,0 +1,14 @@ +version: '3.4' + +services: + server: + image: server + build: + context: . + dockerfile: ./Dockerfile + environment: + NODE_ENV: development + ports: + - 3000:3000 + - 9229:9229 + command: ["node", "--inspect=0.0.0.0:9229", "./src/server.ts"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d56ac75 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,34 @@ +version: '3.4' + +services: + server: + image: server + build: + context: . + dockerfile: ./Dockerfile + environment: + NODE_ENV: production + DB_CONNECT: mongodb://mongodb:27017/sasjs + ports: + - 5000:5000 + volumes: + - .:/usr/src/app + links: + - mongodb + mongodb: + image: mongo:latest + ports: + - 27017:27017 + volumes: + - data:/data/db + mongo-seed-users: + build: ./mongo-seed/users + links: + - mongodb + mongo-seed-clients: + build: ./mongo-seed/clients + links: + - mongodb + +volumes: + data: diff --git a/mongo-seed/clients/Dockerfile b/mongo-seed/clients/Dockerfile new file mode 100644 index 0000000..bf83dea --- /dev/null +++ b/mongo-seed/clients/Dockerfile @@ -0,0 +1,4 @@ +FROM mongo + +COPY ./clients.json /clients.json +CMD mongoimport --host mongodb --db sasjs --collection clients --type json --file /clients.json --jsonArray diff --git a/mongo-seed/clients/clients.json b/mongo-seed/clients/clients.json new file mode 100644 index 0000000..a57438f --- /dev/null +++ b/mongo-seed/clients/clients.json @@ -0,0 +1,6 @@ +[ + { + "clientId": "clientID1", + "clientSecret": "clientSecret" + } +] diff --git a/mongo-seed/users/Dockerfile b/mongo-seed/users/Dockerfile new file mode 100644 index 0000000..2fdd198 --- /dev/null +++ b/mongo-seed/users/Dockerfile @@ -0,0 +1,4 @@ +FROM mongo + +COPY ./users.json /users.json +CMD mongoimport --host mongodb --db sasjs --collection users --type json --file /users.json --jsonArray diff --git a/mongo-seed/users/users.json b/mongo-seed/users/users.json new file mode 100644 index 0000000..9381775 --- /dev/null +++ b/mongo-seed/users/users.json @@ -0,0 +1,10 @@ +[ + { + "id": 1, + "displayName": "Super Admin", + "username": "secretuser", + "password": "$2a$10$hKvcVEZdhEQZCcxt6npazO6mY4jJkrzWvfQ5stdBZi8VTTwVMCVXO", + "isAdmin": true, + "isActive": true + } +]