[Fuego] [PATCH 0/9] Docker Improvements

Guilherme Campos Camargo guicc at profusion.mobi
Fri Jan 26 17:35:36 UTC 2018


Hello, everyone

This series of patches implements a few improvements on the Docker
infrastructure with the ultimate goal of allowing an image to be shared
amoung different users.

One of the benefits of this approach is that it allows the
build-from-scratch to be optional, providing the user much faster set-up
times.

The changes involve, in short:

    * Reorganization of the Dockerfile aiming to reduce the
    number of layers present in the resulting image (by reducing the
    number of RUN/COPY statements) and to reduce cache misses by moving
    components that change less frequently to the beginning of the
    Dockerfile.

    * Remove persistenct of proxy and other configurations that might
    result in conflicts to the user of the image (that's not using it at
    the same host where the image was built).

We tried to provide an in-depth reasoning for each one of the proposed
changes in the commit messages and we'll be glad to hear your inputs
about them.

Thanks

--
Guilherme

ProFUSION Embedded Systems


Guilherme Campos Camargo (9):
  Remove unused variables from docker build/create/run scripts
  Refactor preinst and apt-get/pip install
  Use curl for downloading Jenkins
  Move configuration and jenkins plugin installation to separate scripts
  Remove jenkins user created during build time with host's uid/gid
  Cleanup proxy
  Move dpkg-reconfigure dash to first RUN instruction
  Refactor plugin installation script
  Set depth to "one" and download just a single-branch on git clones

 Dockerfile                                         | 215 +++++++++++----------
 .../apt/sources/fuego-debian-jessie.list           |   2 +
 frontend-install/entrypoint.sh                     |  13 ++
 frontend-install/{ => setup/jenkins}/config.xml    |   0
 .../jenkins.model.JenkinsLocationConfiguration.xml |   0
 .../setup/jenkins/map-jenkins-uid-to-host.sh       |  12 ++
 .../plugins/flot-plotter-plugin/.gitignore         |   0
 .../jenkins}/plugins/flot-plotter-plugin/flot.hpi  | Bin
 .../jenkins}/plugins/flot-plotter-plugin/pom.xml   |   0
 .../src/main/java/flotile/ChartAction.java         |   0
 .../src/main/java/flotile/FlotPublisher.java       |   0
 .../flotile/ChartAction/floatingBox.jelly          |   0
 .../src/main/resources/index.jelly                 |   0
 .../src/main/webapp/flot/.copyarea.db              |   0
 .../src/main/webapp/flot/API.txt                   |   0
 .../src/main/webapp/flot/FAQ.txt                   |   0
 .../src/main/webapp/flot/LICENSE.txt               |   0
 .../src/main/webapp/flot/PLUGINS.txt               |   0
 .../src/main/webapp/flot/README.txt                |   0
 .../src/main/webapp/flot/base64.js                 |   0
 .../src/main/webapp/flot/canvas2image.js           |   0
 .../src/main/webapp/flot/excanvas.min.js           |   0
 .../main/webapp/flot/jquery.colorhelpers.min.js    |   0
 .../main/webapp/flot/jquery.flot.crosshair.min.js  |   0
 .../webapp/flot/jquery.flot.fillbetween.min.js     |   0
 .../src/main/webapp/flot/jquery.flot.image.min.js  |   0
 .../src/main/webapp/flot/jquery.flot.min.js        |   0
 .../main/webapp/flot/jquery.flot.navigate.min.js   |   0
 .../src/main/webapp/flot/jquery.flot.pie.min.js    |   0
 .../src/main/webapp/flot/jquery.flot.resize.min.js |   0
 .../main/webapp/flot/jquery.flot.selection.min.js  |   0
 .../src/main/webapp/flot/jquery.flot.stack.min.js  |   0
 .../src/main/webapp/flot/jquery.flot.symbol.min.js |   0
 .../main/webapp/flot/jquery.flot.threshold.min.js  |   0
 .../src/main/webapp/flot/jquery.min.js             |   0
 .../src/main/webapp/flot/mod.js                    |   0
 .../src/main/webapp/flot/my.css                    |   0
 .../src/main/webapp/help-globalConfig.html         |   0
 frontend-install/setup/jenkins/plugins/install.sh  |  43 +++++
 .../setup/jenkins/set-java-args-proxy.sh           |   7 +
 frontend-install/setup/jenkins/setup.sh            |  11 ++
 frontend-install/setup/lava/setup.sh               |  11 ++
 frontend-install/setup/serial/setup-serio.sh       |   8 +
 frontend-install/setup/serial/setup-serlogin.sh    |   6 +
 frontend-install/setup/serial/setup-ttc.sh         |   7 +
 fuego-host-scripts/docker-build-image.sh           |  21 +-
 fuego-host-scripts/docker-create-container.sh      |   2 +
 .../docker-create-usb-privileged-container.sh      |   2 +
 fuego-host-scripts/docker-remove-container.sh      |   8 -
 fuego-host-scripts/docker-remove-image.sh          |   9 +-
 fuego-host-scripts/docker-start-container.sh       |   8 -
 fuego-host-scripts/jenkins-map-uid.sh              |  18 ++
 52 files changed, 258 insertions(+), 145 deletions(-)
 create mode 100644 frontend-install/apt/sources/fuego-debian-jessie.list
 create mode 100755 frontend-install/entrypoint.sh
 rename frontend-install/{ => setup/jenkins}/config.xml (100%)
 rename frontend-install/{ => setup/jenkins}/jenkins.model.JenkinsLocationConfiguration.xml (100%)
 create mode 100755 frontend-install/setup/jenkins/map-jenkins-uid-to-host.sh
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/.gitignore (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/flot.hpi (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/pom.xml (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/java/flotile/ChartAction.java (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/java/flotile/FlotPublisher.java (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/resources/flotile/ChartAction/floatingBox.jelly (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/resources/index.jelly (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/.copyarea.db (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/API.txt (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/FAQ.txt (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/LICENSE.txt (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/PLUGINS.txt (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/README.txt (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/base64.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/canvas2image.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/excanvas.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.colorhelpers.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.crosshair.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.fillbetween.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.image.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.navigate.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.pie.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.resize.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.selection.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.stack.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.symbol.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.flot.threshold.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/jquery.min.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/mod.js (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/flot/my.css (100%)
 rename frontend-install/{ => setup/jenkins}/plugins/flot-plotter-plugin/src/main/webapp/help-globalConfig.html (100%)
 create mode 100755 frontend-install/setup/jenkins/plugins/install.sh
 create mode 100755 frontend-install/setup/jenkins/set-java-args-proxy.sh
 create mode 100755 frontend-install/setup/jenkins/setup.sh
 create mode 100755 frontend-install/setup/lava/setup.sh
 create mode 100755 frontend-install/setup/serial/setup-serio.sh
 create mode 100755 frontend-install/setup/serial/setup-serlogin.sh
 create mode 100755 frontend-install/setup/serial/setup-ttc.sh
 create mode 100755 fuego-host-scripts/jenkins-map-uid.sh

-- 
2.15.1



More information about the Fuego mailing list