diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 098642bfb8..0000000000 --- a/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM node:8.9.4 - -COPY . /app -COPY ../loopback /loopback - -WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - -CMD ["pm2-docker", "./server/server.js"] - -EXPOSE 3000 diff --git a/Jenkinsfile b/Jenkinsfile index 555508a319..5ef4500d73 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,14 +1,8 @@ #!/usr/bin/env groovy -def branchName = env.BRANCH_NAME; +env.COMPOSER_HTTP_TIMEOUT = 300; -// TODO: We are using latest tag until image rotation it's implemented -env.TAG = 'latest' /* env.BUILD_NUMBER */; -env.BRANCH_NAME = branchName; -env.salixUser = env.salixUser; -env.salixPassword = env.salixPassword; - -switch (branchName) { +switch (env.BRANCH_NAME) { case 'test': env.NODE_ENV = 'test'; env.salixHost = env.testSalixHost; @@ -24,24 +18,21 @@ switch (branchName) { node { stage ('Print environment variables') { - echo "Branch ${branchName}, tag ${env.TAG}, environament ${env.NODE_ENV}" + echo "Branch ${env.BRANCH_NAME}, build number ${env.BUILD_NUMBER}, environment ${env.NODE_ENV}" } stage ('Checkout') { checkout scm } - stage ('Install client Node dependencies') { + stage ('Install Node dependencies') { sh "npm install" + sh "gulp install" } stage ('Build project') { sh "gulp build" } - stage ('Install services Node dependencies') { - sh "cd ./services/loopback && npm install" - } - stage ('Removing old dockers') { - sh "docker-compose down --rmi 'all'" - } stage ('Generating new dockers') { + sh "docker build -t vn-loopback:latest ./services/loopback/" sh "docker-compose up -d --build" + sh "docker image prune -f" } } diff --git a/client/item/src/descriptor/index.html b/client/item/src/descriptor/index.html index 140798989e..e8521b444d 100644 --- a/client/item/src/descriptor/index.html +++ b/client/item/src/descriptor/index.html @@ -11,10 +11,10 @@ - + diff --git a/client/item/src/summary/index.html b/client/item/src/summary/index.html index b19e991462..4cc9edbb10 100644 --- a/client/item/src/summary/index.html +++ b/client/item/src/summary/index.html @@ -5,8 +5,8 @@ + ng-src="//verdnatura.es/vn-image-data/catalog/200x200/{{$ctrl.item.image}}" + zoom-image="//verdnatura.es/vn-image-data/catalog/900x900/{{$ctrl.item.image}}" on-error-src/>
{{$ctrl.item.id}}
diff --git a/docker-compose.tpl.yml b/docker-compose.tpl.yml index 1777118a7d..efbb564e91 100644 --- a/docker-compose.tpl.yml +++ b/docker-compose.tpl.yml @@ -1,12 +1,10 @@ -version: '2' +version: '3.5' services: nginx: - container_name: "${BRANCH_NAME}-nginx" - image: "nginx:${TAG}" privileged: true build: context: ./services/nginx ports: - - "80:80" - mem_limit: 200m + - 80:80 + - 443:443 links: [] diff --git a/gulpfile.js b/gulpfile.js index e0ad41234f..1efcac25f0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -128,7 +128,6 @@ gulp.task('install', () => { let packageFiles = []; let services = fs.readdirSync(servicesDir); - services.push('..'); services.forEach(service => { packageFiles.push(`${servicesDir}/${service}/package.json`); }); @@ -154,34 +153,53 @@ gulp.task('docker-compose', async () => { let composeYml = yaml.safeLoad(compose); let services = await getServices(); - for (let service of services) { - let dockerFile = `${__dirname}/services/${service.name}/Dockerfile`; + let imageTag = 'latest'; + if (process.env.BUILD_NUMBER) + imageTag = process.env.BUILD_NUMBER; - // if (await fs.exists(`./services/${service.name}/Dockerfile`)) - // dockerFile = 'Dockerfile'; + let namePrefix = ''; + if (process.env.BRANCH_NAME) + namePrefix = `${process.env.BRANCH_NAME}-`; + + for (let service of services) { + let dockerFile = `Dockerfile`; + let localDockerFile = `${__dirname}/services/${service.name}/Dockerfile`; + + if (await fs.exists(localDockerFile)) + dockerFile = localDockerFile; composeYml.services[service.name] = { - environment: [ - 'NODE_ENV=${NODE_ENV}', - 'salixHost=${salixHost}', - 'salixPort=${salixPort}', - 'salixUser=${salixUser}', - 'salixPassword=${salixPassword}' - ], - container_name: `\${BRANCH_NAME}-${service.name}`, - image: `${service.name}:\${TAG}`, - volumes: ['/config:/config'], build: { context: `./services`, dockerfile: dockerFile }, - ports: [`${service.port}:${defaultPort}`] + ports: [`${service.port}:${defaultPort}`], + environment: { + NODE_ENV: '${NODE_ENV}', + salixHost: '${salixHost}', + salixPort: '${salixPort}', + salixUser: '${salixUser}', + salixPassword: '${salixPassword}' + } }; + composeYml.services.nginx.links.push( - `${service.name}:\${BRANCH_NAME}-${service.name}` + `${service.name}:${namePrefix}${service.name}` ); } + for (let serviceName in composeYml.services) { + let service = composeYml.services[serviceName]; + Object.assign(service, { + container_name: `${namePrefix}${serviceName}`, + image: `${serviceName}:${imageTag}`, + volumes: ['/config:/config'] + }); + service.build.labels = { + 'salix.tag': imageTag + }; + } + let ymlString = yaml.safeDump(composeYml); await fs.writeFile('./docker-compose.yml', ymlString); }); @@ -193,8 +211,6 @@ gulp.task('build-clean', () => { const del = require('del'); const files = [ `${buildDir}/*`, - `!${buildDir}/templates`, - `!${buildDir}/images`, `docker-compose.yml` ]; return del(files, {force: true}); diff --git a/package-lock.json b/package-lock.json index fc16c84174..33d2625d83 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8577,7 +8577,7 @@ "lodash.groupby": "4.6.0", "p-queue": "1.2.0", "through2": "2.0.3", - "which": "1.3.0" + "which": "1.3.1" }, "dependencies": { "isexe": { @@ -8597,9 +8597,9 @@ } }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "2.0.0" @@ -10827,7 +10827,6 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, "requires": { "argparse": "1.0.9", "esprima": "4.0.0" @@ -10836,8 +10835,7 @@ "esprima": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" } } }, diff --git a/services/.gitignore b/services/.gitignore index 9792c4ca5d..0d44de9940 100644 --- a/services/.gitignore +++ b/services/.gitignore @@ -1,3 +1,2 @@ -datasources.test.json -datasources.development.json +datasources.*.json db.json diff --git a/services/.yo-rc.json b/services/.yo-rc.json deleted file mode 100644 index 02f3fc17be..0000000000 --- a/services/.yo-rc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "generator-loopback": {} -} \ No newline at end of file diff --git a/services/auth/Dockerfile b/services/auth/Dockerfile index 3a151e2896..9d452364e9 100644 --- a/services/auth/Dockerfile +++ b/services/auth/Dockerfile @@ -1,12 +1,7 @@ -FROM node:8.9.4 +FROM vn-loopback:latest COPY auth /app -COPY loopback /loopback COPY nginx/static/webpack-assets.json /loopback/client/ WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - CMD ["pm2-docker", "./server/server.js"] diff --git a/services/client/Dockerfile b/services/client/Dockerfile index 4f58e5ccff..d943bab55c 100644 --- a/services/client/Dockerfile +++ b/services/client/Dockerfile @@ -1,12 +1,6 @@ -FROM node:8.9.4 +FROM vn-loopback:latest COPY client /app -COPY loopback /loopback - WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - CMD ["pm2-docker", "./server/server.js"] diff --git a/services/item/Dockerfile b/services/item/Dockerfile index b87649c5f3..c8f40351b3 100644 --- a/services/item/Dockerfile +++ b/services/item/Dockerfile @@ -1,12 +1,6 @@ -FROM node:8.9.4 +FROM vn-loopback:latest COPY item /app -COPY loopback /loopback - WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - CMD ["pm2-docker", "./server/server.js"] diff --git a/services/loopback/Dockerfile b/services/loopback/Dockerfile new file mode 100644 index 0000000000..65717223d5 --- /dev/null +++ b/services/loopback/Dockerfile @@ -0,0 +1,4 @@ +FROM node:8-slim + +COPY . /loopback +RUN npm -g install pm2 diff --git a/services/mailer/Dockerfile b/services/mailer/Dockerfile index 6ac52382eb..bd8cc10e55 100644 --- a/services/mailer/Dockerfile +++ b/services/mailer/Dockerfile @@ -1,11 +1,5 @@ -FROM node:8.9.4 +FROM vn-loopback:latest COPY mailer /app -COPY loopback /loopback - WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - CMD ["pm2-docker", "./server/server.js"] diff --git a/services/nginx/Dockerfile b/services/nginx/Dockerfile index 074193d903..037dab4415 100644 --- a/services/nginx/Dockerfile +++ b/services/nginx/Dockerfile @@ -1,12 +1,12 @@ FROM nginx -RUN rm /etc/nginx/nginx.conf -RUN rm /etc/nginx/conf.d/default.conf +RUN rm -f /etc/nginx/nginx.conf +RUN rm -f /etc/nginx/conf.d/default.conf COPY temp/nginx.conf /etc/nginx/nginx.conf COPY static /usr/share/nginx/html -RUN apt-get update && apt-get -y install vim dnsmasq dnsutils iputils-ping +RUN apt-get update && apt-get -y install dnsmasq RUN rm -fr /usr/share/dns RUN echo listen-address=127.0.0.1 > /etc/dnsmasq.d/dnsmasq.conf diff --git a/services/nginx/nginx.mst b/services/nginx/nginx.mst index ed08ae691a..bcc34920d7 100644 --- a/services/nginx/nginx.mst +++ b/services/nginx/nginx.mst @@ -13,9 +13,18 @@ http { include /etc/nginx/mime.types; server { - listen {{port}}; - server_name {{host}}; - autoindex off; + listen 80 default_server; + listen [::]:80 default_server; + server_name _; + return 301 https://$host$request_uri; + } + + server { + listen 443 ssl; + ssl_certificate /config/nginx/cert.pem; + ssl_certificate_key /config/nginx/key.pem; + server_name {{host}}; + autoindex off; root /usr/share/nginx/html; diff --git a/services/order/Dockerfile b/services/order/Dockerfile deleted file mode 100644 index c4d8358dbd..0000000000 --- a/services/order/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM node:8.9.4 - -COPY order /app -COPY loopback /loopback - -WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - -CMD ["pm2-docker", "./server/server.js"] - diff --git a/services/order/package.json b/services/order/package.json deleted file mode 100644 index f389ef8ebd..0000000000 --- a/services/order/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "vn-order", - "version": "1.0.0", - "main": "server/server.js", - "scripts": { - "lint": "eslint .", - "start": "node .", - "posttest": "npm run lint && nsp check" - }, - "repository": { - "type": "git", - "url": "https://git.verdnatura.es/salix" - }, - "license": "GPL-3.0", - "description": "vn-order" -} diff --git a/services/order/server/model-config.json b/services/order/server/model-config.json deleted file mode 100644 index 231c0b95f2..0000000000 --- a/services/order/server/model-config.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - -} - - - diff --git a/services/order/server/server.js b/services/order/server/server.js deleted file mode 100644 index 030bbc1b49..0000000000 --- a/services/order/server/server.js +++ /dev/null @@ -1,5 +0,0 @@ - -var vnLoopback = require('../../loopback/server/server.js'); - -var app = module.exports = vnLoopback.loopback(); -vnLoopback.boot(app, __dirname, module); diff --git a/services/print/Dockerfile b/services/print/Dockerfile index 9320bd0ac9..79ec29c2f6 100644 --- a/services/print/Dockerfile +++ b/services/print/Dockerfile @@ -1,11 +1,5 @@ -FROM node:8.9.4 +FROM vn-loopback:latest COPY print /app -COPY loopback /loopback - WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - CMD ["pm2-docker", "./server/server.js"] diff --git a/services/production/Dockerfile b/services/production/Dockerfile index 81a08e0174..c3c5f4472b 100644 --- a/services/production/Dockerfile +++ b/services/production/Dockerfile @@ -1,11 +1,5 @@ -FROM node:8.9.4 +FROM vn-loopback:latest COPY production /app -COPY loopback /loopback - WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - CMD ["pm2-docker", "./server/server.js"] diff --git a/services/route/Dockerfile b/services/route/Dockerfile index 71be841231..f2b9fb18b3 100644 --- a/services/route/Dockerfile +++ b/services/route/Dockerfile @@ -1,11 +1,5 @@ -FROM node:8.9.4 +FROM vn-loopback:latest COPY route /app -COPY loopback /loopback - WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - CMD ["pm2-docker", "./server/server.js"] diff --git a/services/salix/Dockerfile b/services/salix/Dockerfile index a7762e81e9..cb1314ea63 100644 --- a/services/salix/Dockerfile +++ b/services/salix/Dockerfile @@ -1,12 +1,6 @@ -FROM node:8.9.4 +FROM vn-loopback:latest COPY salix /app -COPY loopback /loopback COPY nginx/static/webpack-assets.json /loopback/client/ - WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - CMD ["pm2-docker", "./server/server.js"] diff --git a/services/ticket/Dockerfile b/services/ticket/Dockerfile index b91214f21e..67552ee8c7 100644 --- a/services/ticket/Dockerfile +++ b/services/ticket/Dockerfile @@ -1,12 +1,5 @@ -FROM node:8.9.4 +FROM vn-loopback:latest COPY ticket /app -COPY loopback /loopback - WORKDIR /app - -RUN npm install -RUN npm -g install pm2 - CMD ["pm2-docker", "./server/server.js"] -