From b63435189b1c706de096722726ca6fec182e877d Mon Sep 17 00:00:00 2001 From: Lucas Cimon Date: Fri, 29 Mar 2019 17:29:51 +0100 Subject: [PATCH] Ajout Dockerfile & publication sur Docker hub --- .dockerignore | 4 ++++ .travis.yml | 33 ++++++++++++++++++++++----------- .travis/docker_build_push.sh | 14 ++++++++++++++ Dockerfile | 11 +++++++++++ docker-compose.yml | 25 ------------------------- docs/start.html | 3 ++- 6 files changed, 53 insertions(+), 37 deletions(-) create mode 100644 .dockerignore create mode 100644 .travis/docker_build_push.sh create mode 100644 Dockerfile delete mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..f06e279f3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +/.git/ +/node_modules/ +/src/app/bower_components/ +/Dockerfile \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index fca7cea2d..ea1a70a08 100755 --- a/.travis.yml +++ b/.travis.yml @@ -5,15 +5,26 @@ node_js: addons: firefox: "50.0" -before_script: - - export DISPLAY=:99.0 - - sh -e /etc/init.d/xvfb start - - npm install -g bower karma grunt-cli jshint - - npm start > /dev/null & - #- node node_modules/protractor/bin/webdriver-manager update - #- java -jar node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-*.jar -Dwebdriver.chrome.driver=./protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 & - - sleep 3 # give server time to start +stages: +- name: test +- name: docker + if: (branch = develop OR branch =~ ^v[0-9]) AND type != pull_request AND repo = "voyages-sncf-technologies/hesperides" -script: - - node_modules/.bin/karma start karma.conf.js --no-auto-watch --single-run - #- node_modules/.bin/protractor test/protractor-conf.js --browser=firefox +jobs: + include: + - stage: test + env: KARMA TESTS + before_script: + - export DISPLAY=:99.0 + - sh -e /etc/init.d/xvfb start + - npm install -g bower karma grunt-cli jshint + - npm start > /dev/null & + #- node node_modules/protractor/bin/webdriver-manager update + #- java -jar node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-*.jar -Dwebdriver.chrome.driver=./protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 & + - sleep 3 # give server time to start + script: + - node_modules/.bin/karma start karma.conf.js --no-auto-watch --single-run + #- node_modules/.bin/protractor test/protractor-conf.js --browser=firefox + - stage: docker + env: DEPLOY TO DOCKER HUB + script: "./.travis/docker_build_push.sh" diff --git a/.travis/docker_build_push.sh b/.travis/docker_build_push.sh new file mode 100644 index 000000000..67ef4e020 --- /dev/null +++ b/.travis/docker_build_push.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -o pipefail -o errexit -o nounset + +# Build a docker image and push it to docker hub (only when it's not a pull request) +if [ "$DOCKER_USER" != "" ] && [ "$DOCKER_PASS" != "" ]; then + docker login -u $DOCKER_USER -p $DOCKER_PASS + export TAG=`if [ "$TRAVIS_BRANCH" == "master" ]; then echo "latest"; else echo $TRAVIS_BRANCH | sed -e 's/\//_/g' -e 's/\#//g' -e 's/\-/_/g' ; fi` + docker build -t hesperides/hesperides-gui:$TAG --label git_commit=$COMMIT . + docker push hesperides/hesperides-gui:$TAG + echo "✓ Docker image build and pushed to docker hub" +else + echo '✗ Missing $DOCKER_USER or $DOCKER_PASS environment variable' +fi \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..cc9f72b4c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM node:8-alpine +WORKDIR /usr/src/app +RUN echo '{"allow_root": true}' > /root/.bowerrc +RUN apk add git +COPY . . +RUN npm install +RUN npm run postinstall + +FROM nginx:1.15-alpine +COPY --from=0 /usr/src/app/src/app /usr/share/nginx/html/ +COPY --from=0 /usr/src/app/src/app/img/favicon.ico /usr/share/nginx/html/ diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index a79c2a3bb..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,25 +0,0 @@ -version: '2' -services: - elasticsearch: - image: "elasticsearch:1.7" - command: "elasticsearch -Dcluster.name=hesperides" - redis: - image: "redis" - ports: - - "6379:6379" - rediscache: - image: "redis" - ports: - - "56379:6379" - hesperides: - image: "hesperides/hesperides" - ports: - - "8080:8080" - - "8081:8081" -# volumes: -# - "./src/app:/hesperides-gui:ro" -# - "./docker/docker-conf.yml:/etc/hesperides/hesperides-configuration.yml:ro" - depends_on: - - elasticsearch - - redis - - rediscache diff --git a/docs/start.html b/docs/start.html index 71b7cb317..04b2e2770 100755 --- a/docs/start.html +++ b/docs/start.html @@ -127,7 +127,8 @@

Installation

Docker

git pull https://github.com/voyages-sncf-technologies/hesperides-gui
-docker-compose up

+docker build -t hesperides-gui . +docker run --rm -it -p 80:80 hesperides-gui

Download sources