From d2c74fe16f540692775574380a87eb195c6c062d Mon Sep 17 00:00:00 2001 From: jem Date: Sat, 18 Apr 2020 15:25:40 +0200 Subject: [PATCH] add docker doc --- README.md | 10 ++++- doc/example/50_docker_module/build.py | 42 +++++++++++++++++++ doc/example/50_docker_module/image/Dockerfile | 1 + .../image/resources/install.sh | 13 ++++++ doc/example/50_docker_module/test/Dockerfile | 7 ++++ .../50_docker_module/test/serverspec.edn | 1 + 6 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 doc/example/50_docker_module/build.py create mode 100644 doc/example/50_docker_module/image/Dockerfile create mode 100755 doc/example/50_docker_module/image/resources/install.sh create mode 100644 doc/example/50_docker_module/test/Dockerfile create mode 100644 doc/example/50_docker_module/test/serverspec.edn diff --git a/README.md b/README.md index f635ef3..a98920f 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ dda-devops-build provide a envioronment to tie several DevOps tools together for * terraform v0.11, v0.12 supporting * local file backends * s3 backends +* docker / dockerhub * user / team credentials managed by gopass * dda-pallet @@ -18,7 +19,7 @@ dda-devops-build provide a envioronment to tie several DevOps tools together for ``` sudo apt install python3-pip sudo pip3 install pip3 --upgrade --user -pip3 install --pre pybuilder ddadevops deprecation --user +pip3 install pybuilder ddadevops deprecation --user export PATH=$PATH:~/.local/bin # in case of using terraform @@ -160,6 +161,13 @@ def access(project): build.get_mfa_session() ``` +## Feature DdaDockerBuild + +The docker build supports image building, tagging, testing and login to dockerhost. +For bash based builds we support often used script-parts as predefined functions [see install_functions.sh](src/main/resources/docker/image/resources/install_functions.sh). + +A full working example: [doc/example/50_docker_module](doc/example/50_docker_module) + # Releasing and updating ## Publish snapshot diff --git a/doc/example/50_docker_module/build.py b/doc/example/50_docker_module/build.py new file mode 100644 index 0000000..55ae844 --- /dev/null +++ b/doc/example/50_docker_module/build.py @@ -0,0 +1,42 @@ +from pybuilder.core import task, init +from ddadevops import * + +name = 'example-project' +MODULE = 'docker-module' +PROJECT_ROOT_PATH = '../../..' + +class MyBuild(DevopsDockerBuild): + pass + +@init +def initialize(project): + project.build_depends_on('ddadevops>=0.6.0') + stage = 'prod' + dockerhub_user = gopass_field_from_path('your-credential-path', 'login') + dockerhub_password = gopass_password_from_path('your-credential-path') + config = create_devops_docker_build_config( + stage, PROJECT_ROOT_PATH, MODULE, dockerhub_user, dockerhub_password) + build = MyBuild(project, config) + build.initialize_build_dir() + + +@task +def image(project): + build = get_devops_build(project) + build.image() + +@task +def drun(project): + build = get_devops_build(project) + build.drun() + +@task +def publish(project): + build = get_devops_build(project) + build.dockerhub_login() + build.dockerhub_publish() + +@task +def test(project): + build = get_devops_build(project) + build.test() diff --git a/doc/example/50_docker_module/image/Dockerfile b/doc/example/50_docker_module/image/Dockerfile new file mode 100644 index 0000000..6178011 --- /dev/null +++ b/doc/example/50_docker_module/image/Dockerfile @@ -0,0 +1 @@ +FROM ubuntu:18.04 diff --git a/doc/example/50_docker_module/image/resources/install.sh b/doc/example/50_docker_module/image/resources/install.sh new file mode 100755 index 0000000..49d791e --- /dev/null +++ b/doc/example/50_docker_module/image/resources/install.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +function main() { + + upgradeSystem + + # do some stuff + + cleanupDocker +} + +source /tmp/resources/install_functions.sh +main \ No newline at end of file diff --git a/doc/example/50_docker_module/test/Dockerfile b/doc/example/50_docker_module/test/Dockerfile new file mode 100644 index 0000000..20836e7 --- /dev/null +++ b/doc/example/50_docker_module/test/Dockerfile @@ -0,0 +1,7 @@ +FROM docker-module +RUN curl -L -o /tmp/serverspec.jar \ + https://github.com/DomainDrivenArchitecture/dda-serverspec-crate/releases/download/1.3.4/dda-serverspec-standalone.jar + +COPY serverspec.edn /tmp/serverspec.edn + +RUN java -jar /tmp/serverspec.jar /tmp/serverspec.edn -v diff --git a/doc/example/50_docker_module/test/serverspec.edn b/doc/example/50_docker_module/test/serverspec.edn new file mode 100644 index 0000000..80ae6d2 --- /dev/null +++ b/doc/example/50_docker_module/test/serverspec.edn @@ -0,0 +1 @@ +{:file [{:path "/tmp/resources" :exits false}]}