diff --git a/.dockerignore b/.dockerignore
index 84eb9b1..a51ea8a 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,4 +1,2 @@
node_modules/
-nginx/
doc/
-build/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..179e421
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,53 @@
+image: docker:17
+
+variables:
+ GIT_SUBMODULE_STRATEGY: normal
+ DOCKER_COMPOSE_VERSION: 1.13.0
+
+services:
+- docker:dind
+
+before_script:
+- mkdir -p build
+
+stages:
+- build
+- test
+- deploy
+
+build_job:
+ stage: build
+ script:
+ - docker run --rm -v $(pwd)/package.json:/usr/src/app/package.json -v $(pwd)/build:/usr/src/app/build -v $(pwd)/public:/usr/src/app/public -v $(pwd)/src:/usr/src/app/src -w /usr/src/app node:7.9.0-slim bash -c 'npm install; npm run build'
+ artifacts:
+ paths:
+ - build/
+ expire_in: 1 week
+ tags:
+ - docker
+
+test_job:
+ stage: test
+ script:
+ - docker run --rm -e CI=true -v $(pwd)/package.json:/usr/src/app/package.json -v $(pwd)/public:/usr/src/app/public -v $(pwd)/src:/usr/src/app/src -w /usr/src/app node:7.9.0-slim bash -c 'npm install; npm test'
+ tags:
+ - docker
+
+deploy_review:
+ stage: deploy
+ environment: review
+ script:
+ - mkdir -p ~/.docker
+ - echo "$DEPLOYMENT_CACERT" > ~/.docker/ca.pem
+ - echo "$DEPLOYMENT_CLIENT_CERT" > ~/.docker/cert.pem
+ - echo "$DEPLOYMENT_CLIENT_KEY" > ~/.docker/key.pem
+ - apk add --no-cache py-pip
+ - pip install docker-compose==$DOCKER_COMPOSE_VERSION
+ - docker-compose build
+ - export DOCKER_HOST=$DEPLOYMENT_HOST && export DOCKER_TLS_VERIFY=1 && export DOCKER_CERT_PATH=~/.docker && export COMPOSE_TLS_VERSION=TLSv1_2
+ - docker-compose --verbose down
+ - docker-compose --verbose up -d
+ only:
+ - develop
+ tags:
+ - docker
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..4cab793
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule "VILLASweb-backend"]
+ path = VILLASweb-backend
+ url = ../../VILLASframework/VILLASweb-backend.git
+ branch = develop
diff --git a/VILLASweb-backend b/VILLASweb-backend
new file mode 160000
index 0000000..8184b91
--- /dev/null
+++ b/VILLASweb-backend
@@ -0,0 +1 @@
+Subproject commit 8184b91f013f25887a129fd95354da3cc5796244
diff --git a/docker-compose.yml b/docker-compose.yml
index 579c30b..32fffde 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,39 +1,33 @@
version: "2"
services:
- webserver:
- image: nginx:stable
- volumes:
- - ./nginx:/etc/nginx/conf.d/
- - website-volume:/www
+ frontend:
+ build:
+ context: .
+ dockerfile: nginx/Dockerfile
links:
- backend
+ environment:
+ - REACT_APP_HTTP_PROXY
ports:
- "80:80"
- "443:443"
restart: always
- frontend:
- build: .
- volumes:
- - ./:/react
- - website-volume:/result
-
backend:
- image: villasweb-backend
+ build: VILLASweb-backend
links:
- database
environment:
- NODE_ENV=production
+ ports:
+ - "4000:4000"
restart: always
database:
image: mongo:latest
+ user: mongodb
volumes:
- - data-volume:/data/db
+ - /opt/database:/data/db
restart: always
user: mongodb
-
-volumes:
- data-volume:
- website-volume:
diff --git a/nginx/Dockerfile b/nginx/Dockerfile
new file mode 100644
index 0000000..6902568
--- /dev/null
+++ b/nginx/Dockerfile
@@ -0,0 +1,10 @@
+FROM nginx:stable-alpine
+
+# Copy frontend files and make them accesible to nginx
+RUN mkdir /www
+COPY build /www
+RUN chown nginx:nginx -R /www
+RUN chmod -R 0755 /www
+
+# Copy nginx configuration
+COPY nginx/villas.conf /etc/nginx/conf.d/default.conf
diff --git a/package.json b/package.json
index aa1e73c..a8cc8a2 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,6 @@
"name": "villasweb-frontend",
"version": "0.1.0",
"private": true,
- "proxy": "http://localhost:4000",
"dependencies": {
"bootstrap": "^3.3.7",
"classnames": "^2.2.5",
diff --git a/src/App.test.js b/src/Header.test.js
similarity index 65%
rename from src/App.test.js
rename to src/Header.test.js
index b84af98..db2da16 100644
--- a/src/App.test.js
+++ b/src/Header.test.js
@@ -1,8 +1,8 @@
import React from 'react';
import ReactDOM from 'react-dom';
-import App from './App';
+import Header from './components/header';
it('renders without crashing', () => {
const div = document.createElement('div');
- ReactDOM.render(, div);
+ ReactDOM.render(, div);
});
diff --git a/src/data-managers/rest-data-manager.js b/src/data-managers/rest-data-manager.js
index 2ae0a46..51560a2 100644
--- a/src/data-managers/rest-data-manager.js
+++ b/src/data-managers/rest-data-manager.js
@@ -22,7 +22,8 @@
import RestAPI from '../api/rest-api';
import AppDispatcher from '../app-dispatcher';
-const API_URL = '/api/v1';
+const HOST = process.env.REACT_APP_HTTP_PROXY || "";
+const API_URL = HOST + '/api/v1';
class RestDataManager {
constructor(type, url, keyFilter) {