From 4405071de09d944268843a172a12660894bb185f Mon Sep 17 00:00:00 2001 From: Jiri Podivin Date: Fri, 12 Feb 2021 11:31:09 +0100 Subject: [PATCH] Docker image refinement and preparation for future development. .dockerignore file was added to limit size of the docker context The more complex docker images will be placed in newly created dockerfiles dir. Each in its own subdir and accompanied with README.rst file describing their use. Right now there is only one, the same as the one in repo root. But in the future there will be more. Signed-off-by: Jiri Podivin Change-Id: I5ed91d4258d9ad6725a86d5c3c6a40a02212b5d4 --- .dockerignore | 67 +++++++++++++++++++++++++ Dockerfile | 14 ++++-- README.rst | 8 ++- dockerfiles/localvalidations/Dockerfile | 31 ++++++++++++ dockerfiles/localvalidations/README.rst | 7 +++ 5 files changed, 122 insertions(+), 5 deletions(-) create mode 100644 .dockerignore create mode 100644 dockerfiles/localvalidations/Dockerfile create mode 100644 dockerfiles/localvalidations/README.rst diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..97e415cf --- /dev/null +++ b/.dockerignore @@ -0,0 +1,67 @@ +# Docker image doesn't need any files that git doesn't track. +#Therefore the .dockerignore largely follows the structure of .gitignore. +# C extensions +*.so + +# Packages +*.egg* +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg +lib +lib64 + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +cover/ +.coverage* +!.coveragerc +.tox +nosetests.xml +.testrepository +.venv +.stestr/* + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# Complexity +output/*.html +output/*/index.html + +# Sphinx +doc/build +doc/source/reference/api/ + +# pbr generates these +AUTHORS +ChangeLog + +# Editors +*~ +.*.swp +.*sw? + +# Files created by releasenotes build +releasenotes/build + +# Ansible specific +hosts +*.retry + +#Vagrantfiles, since we are using docker +Vagrantfile.* \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 8980c354..f5269e6c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,14 @@ FROM centos:latest LABEL name="VF develoment dockerfile" -LABEL version="0.2" +LABEL version="0.3" LABEL description="Provides environment for development of new validations." RUN dnf install -y git python3-pip gcc python3-devel jq +#We copy contents of the local validations-libs repo with all of our changes COPY . /root/validations-libs +#validations-common repo is cloned RUN git clone https://opendev.org/openstack/validations-common /root/validations-common RUN python3 -m pip install cryptography==3.3 @@ -19,7 +21,11 @@ RUN cd /root/validations-common && \ python3 -m pip install . && \ python3 -m pip install -r test-requirements.txt -RUN ln -s /usr/local/share/ansible /usr/share/ansible -RUN mkdir /etc/ansible && \ +#Setting up the default directory structure for both ansible, +#and the VF +RUN ln -s /usr/local/share/ansible /usr/share/ansible && \ + mkdir -p /var/log/validations +#Simplified ansible inventory is created, containing only localhost, +#and defining the connection as local. +RUN mkdir -p /etc/ansible && \ echo "localhost ansible_connection=local" > /etc/ansible/hosts -RUN mkdir -p /var/log/validations diff --git a/README.rst b/README.rst index 1d804a1b..45533851 100644 --- a/README.rst +++ b/README.rst @@ -19,11 +19,17 @@ Docker Quickstart ================= A Dockerfile is provided at the root of the Validations Library project in -order to quickly set and hack the Validation Framework. +order to quickly set and hack the Validation Framework, on a equivalent of a single machine. Build the container from the Dockerfile by running:: docker build -t "vf:dockerfile" . +From the validations-libs repo directory. + +.. note:: + More complex images are available in the dockerfiles directory + and require explicit specification of both build context and the Dockerfile. + Then you can run the container and start to run some builtin Validations:: docker run -ti vf:dockerfile /bin/bash diff --git a/dockerfiles/localvalidations/Dockerfile b/dockerfiles/localvalidations/Dockerfile new file mode 100644 index 00000000..f5269e6c --- /dev/null +++ b/dockerfiles/localvalidations/Dockerfile @@ -0,0 +1,31 @@ +FROM centos:latest + +LABEL name="VF develoment dockerfile" +LABEL version="0.3" +LABEL description="Provides environment for development of new validations." + +RUN dnf install -y git python3-pip gcc python3-devel jq + +#We copy contents of the local validations-libs repo with all of our changes +COPY . /root/validations-libs +#validations-common repo is cloned +RUN git clone https://opendev.org/openstack/validations-common /root/validations-common + +RUN python3 -m pip install cryptography==3.3 + +RUN cd /root/validations-libs && \ + python3 -m pip install . && \ + python3 -m pip install -r test-requirements.txt + +RUN cd /root/validations-common && \ + python3 -m pip install . && \ + python3 -m pip install -r test-requirements.txt + +#Setting up the default directory structure for both ansible, +#and the VF +RUN ln -s /usr/local/share/ansible /usr/share/ansible && \ + mkdir -p /var/log/validations +#Simplified ansible inventory is created, containing only localhost, +#and defining the connection as local. +RUN mkdir -p /etc/ansible && \ + echo "localhost ansible_connection=local" > /etc/ansible/hosts diff --git a/dockerfiles/localvalidations/README.rst b/dockerfiles/localvalidations/README.rst new file mode 100644 index 00000000..e6c8b355 --- /dev/null +++ b/dockerfiles/localvalidations/README.rst @@ -0,0 +1,7 @@ +Localhost validations dockerfile +================================ + +Default dockerfile for development of new validations. +Creates a container suitable for running validations requiring only a local machine. + +More complex setup, such as Openstack deployment, requires further adjustment.