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",