diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..3ca193c28 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,23 @@ +# Ignore files to be uploaded to the image +.env +.env.dev +.env.prod +.git +.gitignore +Dockerfile +Dockerfile.prod +README.md +CODE_OF_CONDUCT.md +CONTRIBUTING.md + +/coverage +/.nyc_output + +# VS Studio files +.vs/* +obj/* +bin/* +/.vscode +Project.njsproj + +this.server.config.dev.json diff --git a/.env.local b/.env.local new file mode 100644 index 000000000..cd5365baa --- /dev/null +++ b/.env.local @@ -0,0 +1,4 @@ +NODE_ENV=production +PORT=4101 + + diff --git a/.gitignore b/.gitignore index 91311b687..0390319c6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,14 +2,15 @@ .vs/* obj/* bin/* +/.vscode -node_modules/* -this.server.config.json .env -dependency/ +.env.dev +this.server.config.json +this.server.config.dev.json -\.nyc_output/ +/node_modules +/dependency -coverage/* - -\.vscode/ +/.nyc_output +/coverage diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..9e595d09d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM mhart/alpine-node:12 + +# Directory where the service will be installed +ARG API_DIR=/usr/src/saweb + +# Prepare required directories +RUN mkdir -p ${API_DIR} + +# Use app directory as current workdir +WORKDIR ${API_DIR} + +# Copy package.json to workdir +COPY . ${API_DIR}/ + +# Install dependencies +RUN npm install --production + +# Expose Port +EXPOSE $PORT diff --git a/Dockerfile.prod b/Dockerfile.prod new file mode 100644 index 000000000..13ea9810d --- /dev/null +++ b/Dockerfile.prod @@ -0,0 +1,21 @@ +FROM mhart/alpine-node:8 + +ENV PORT=4101 + +RUN mkdir -p /var/www/app && \ + mkdir -p /var/www/app/node_modules + +# Use app directory as current workdir +WORKDIR /var/www/app +ENV PATH /var/www/app/node_modules/.bin:$PATH +# Copy package.json to workdir +COPY package.json /var/www/app/package.json + +# Install dependencies +RUN npm install + +# Copy application code +COPY . /var/www/app + +# Expose Port +EXPOSE $PORT diff --git a/Project.njsproj b/Project.njsproj index a5cb51182..b1341553a 100644 --- a/Project.njsproj +++ b/Project.njsproj @@ -42,7 +42,6 @@ - @@ -129,4 +128,4 @@ - \ No newline at end of file + diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 000000000..6a28ecea3 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,24 @@ +version: '3' +services: + node: + image: aaweb-dev:v1 + build: + context: . + dockerfile: ./Dockerfile.prod + env_file: ./.env + container_name: aaweb + tty: true + stdin_open: true + volumes: + - ./:/var/www/app + - /var/www/app/node_modules + working_dir: /var/www/app + restart: always + command: node server + expose: + - 4101 + network_mode: webproxy +networks: + default: + external: + name: webproxy diff --git a/package-lock.json b/package-lock.json index c8d05d309..57f6598cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "saweb", + "name": "@superalgos/saweb", "version": "0.1.0", "lockfileVersion": 1, "requires": true, diff --git a/package.json b/package.json index 977d25f47..094c459d4 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "saweb", + "name": "@superalgos/saweb", "version": "0.1.0", "description": "Superalgos web interface.", "main": "server.js",