Use tagged common scripts (#7)
This commit is contained in:
parent
a27798292c
commit
eca2591d29
|
@ -16,7 +16,7 @@ Images are built in the Docker Hub automatically on each push to the master bran
|
|||
It's really easy to build images locally for the distro of your choice. To build an image you only need to run:
|
||||
``` bash
|
||||
$ docker build https://github.com/yaodu/docker-heat.git \
|
||||
--file dockerfiles/Dockerfile-debian \
|
||||
--file debian/Dockerfile \
|
||||
--tag yaodu/heat:latest
|
||||
```
|
||||
You can, of course, substitute `debian` with your distro of choice.
|
||||
|
@ -32,7 +32,7 @@ For more advanced building you can use docker build arguments to define:
|
|||
This makes it really easy to integrate Yaodu images into your development or CI/CD workflow, for example, if you wanted to build an image from [this PS](https://review.openstack.org/#/c/213731/4) you could run:
|
||||
``` bash
|
||||
$ docker build https://github.com/yaodu/docker-heat.git \
|
||||
--file dockerfiles/Dockerfile-ubuntu \
|
||||
--file ubuntu/Dockerfile \
|
||||
--tag mydockernamespace/heat-testing:213731-4 \
|
||||
--build-arg GIT_REPO=http://git.openstack.org/openstack/heat.git \
|
||||
--build-arg GIT_REF_REPO=http://git.openstack.org/openstack/heat.git \
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
FROM centos:7
|
||||
|
||||
ENV PROJECT=heat
|
||||
ARG DOCKER_REPO=yaodu/openstack-requirements
|
||||
ARG DOCKER_TAG=centos
|
||||
ARG WHEELS
|
||||
ARG GIT_REPO=https://github.com/openstack/${PROJECT}
|
||||
ARG GIT_REF
|
||||
ARG GIT_REF_REPO=https://git.openstack.org/openstack/${PROJECT}
|
||||
ARG SCRIPTS=https://github.com/yaodu/common/archive/0.1.2.tar.gz
|
||||
|
||||
RUN set -x \
|
||||
&& yum install --setopt=tsflags=nodocs -y python curl \
|
||||
&& curl -sSL $SCRIPTS | tar xz -C /tmp/ --strip-components=2 \
|
||||
&& /tmp/download.sh $DOCKER_REPO $DOCKER_TAG $WHEELS \
|
||||
&& /tmp/install.sh $PROJECT $GIT_REPO $GIT_REF_REPO $GIT_REF \
|
||||
&& /tmp/cleanup.sh
|
|
@ -0,0 +1,18 @@
|
|||
FROM debian:jessie-slim
|
||||
|
||||
ENV PROJECT=heat
|
||||
ARG DOCKER_REPO=yaodu/openstack-requirements
|
||||
ARG DOCKER_TAG=latest
|
||||
ARG WHEELS
|
||||
ARG GIT_REPO=https://github.com/openstack/${PROJECT}
|
||||
ARG GIT_REF
|
||||
ARG GIT_REF_REPO=https://git.openstack.org/openstack/${PROJECT}
|
||||
ARG SCRIPTS=https://github.com/yaodu/common/archive/0.1.2.tar.gz
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends python ca-certificates curl \
|
||||
&& curl -sSL $SCRIPTS | tar xz -C /tmp/ --strip-components=2 \
|
||||
&& /tmp/download.sh $DOCKER_REPO $DOCKER_TAG $WHEELS \
|
||||
&& /tmp/install.sh $PROJECT $GIT_REPO $GIT_REF_REPO $GIT_REF \
|
||||
&& /tmp/cleanup.sh
|
|
@ -1,68 +0,0 @@
|
|||
FROM centos:7
|
||||
|
||||
ENV PROJECT=heat
|
||||
ARG DOCKER_REPO=yaodu/openstack-requirements
|
||||
ARG DOCKER_TAG=centos
|
||||
ARG WHEELS
|
||||
ARG GIT_REPO=https://github.com/openstack/${PROJECT}
|
||||
ARG GIT_REF
|
||||
ARG GIT_REF_REPO=https://git.openstack.org/openstack/${PROJECT}
|
||||
|
||||
RUN set -x \
|
||||
&& yum install --setopt=tsflags=nodocs -y \
|
||||
# Project specific packages start
|
||||
python \
|
||||
httpd \
|
||||
mod_ssl \
|
||||
mod_wsgi \
|
||||
# Project specific packages end
|
||||
&& yum install --setopt=tsflags=nodocs -y git \
|
||||
# common install start
|
||||
&& if [ -n "$WHEELS" ]; then \
|
||||
curl -sSL ${WHEELS} > /tmp/wheels.tar.gz; \
|
||||
else \
|
||||
TOKEN=$(curl -sSL "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${DOCKER_REPO}:pull" | \
|
||||
python -c "import sys, json; print json.load(sys.stdin)['token']") \
|
||||
&& BLOB=$(curl -sSL -H "Authorization: Bearer ${TOKEN}" https://registry.hub.docker.com/v2/${DOCKER_REPO}/manifests/${DOCKER_TAG} | \
|
||||
python -c "import sys, json; print json.load(sys.stdin)['fsLayers'][0]['blobSum']") \
|
||||
&& curl -sSL -H "Authorization: Bearer ${TOKEN}" https://registry.hub.docker.com/v2/${DOCKER_REPO}/blobs/${BLOB} > /tmp/wheels.tar.gz; \
|
||||
fi \
|
||||
&& git clone ${GIT_REPO} /tmp/${PROJECT} \
|
||||
&& if [ -n "$GIT_REF" ]; then \
|
||||
git --git-dir /tmp/${PROJECT}/.git fetch ${GIT_REF_REPO} ${GIT_REF} \
|
||||
&& git --git-dir /tmp/${PROJECT}/.git checkout FETCH_HEAD; \
|
||||
fi \
|
||||
&& mkdir /tmp/packages \
|
||||
&& tar xf /tmp/wheels.tar.gz -C /tmp/packages/ --strip-components=2 root/packages \
|
||||
&& curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py \
|
||||
&& python get-pip.py \
|
||||
&& rm get-pip.py \
|
||||
&& pip install --no-cache-dir --no-index --no-compile --find-links /tmp/packages --constraint /tmp/packages/upper-constraints.txt /tmp/${PROJECT} \
|
||||
&& groupadd -g 42424 ${PROJECT} \
|
||||
&& useradd -u 42424 -g ${PROJECT} -M -d /var/lib/${PROJECT} -s /usr/sbin/nologin -c "${PROJECT} user" ${PROJECT} \
|
||||
&& mkdir -p /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} \
|
||||
&& chown ${PROJECT}:${PROJECT} /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} \
|
||||
# common install end
|
||||
# Project specific command block start
|
||||
&& pip install --no-cache-dir --no-index --no-compile --find-links /tmp/packages --constraint /tmp/packages/upper-constraints.txt \
|
||||
python-memcached \
|
||||
pymysql \
|
||||
&& cp -rfv /tmp/${PROJECT}/etc/heat/* /etc/${PROJECT}/ \
|
||||
&& chown -R ${PROJECT}:${PROJECT} /etc/${PROJECT} \
|
||||
&& chown root:root /etc/${PROJECT}/policy.json \
|
||||
&& sed -i 's/^Listen 80/#Listen 80/' /etc/httpd/conf/httpd.conf \
|
||||
&& rm /etc/httpd/conf.d/* \
|
||||
# Provide compatibility with ubuntu/debian apache:
|
||||
&& ln -s /usr/sbin/httpd /usr/sbin/apache2 \
|
||||
&& mkdir -p /etc/apache2/conf-enabled \
|
||||
&& echo "IncludeOptional /etc/apache2/conf-enabled/*.conf" >> /etc/httpd/conf/httpd.conf \
|
||||
&& mkdir -p /etc/apache2/mods-available \
|
||||
&& echo "Include /etc/apache2/mods-available/*.conf" >> /etc/httpd/conf/httpd.conf \
|
||||
&& touch /etc/apache2/envvars \
|
||||
# Project specific command block end
|
||||
&& yum history -y undo $(yum history list git | tail -2 | head -1 | awk '{ print $1}') \
|
||||
&& rpm -e --nodeps centos-logos \
|
||||
&& yum clean all \
|
||||
&& rm -rf /tmp/* /root/.cache \
|
||||
&& pip uninstall pip wheel -y \
|
||||
&& find / -type f -name "*.pyc" -delete
|
|
@ -1,59 +0,0 @@
|
|||
FROM debian:jessie
|
||||
|
||||
ENV PROJECT=heat
|
||||
ARG DOCKER_REPO=yaodu/openstack-requirements
|
||||
ARG DOCKER_TAG=latest
|
||||
ARG WHEELS
|
||||
ARG GIT_REPO=https://github.com/openstack/${PROJECT}
|
||||
ARG GIT_REF
|
||||
ARG GIT_REF_REPO=https://git.openstack.org/openstack/${PROJECT}
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
# Project specific packages start
|
||||
python \
|
||||
apache2 \
|
||||
libapache2-mod-wsgi \
|
||||
# Project specific packages end
|
||||
&& apt-get install -y --no-install-recommends ca-certificates curl git \
|
||||
# common install start
|
||||
&& if [ -n "$WHEELS" ]; then \
|
||||
curl -sSL ${WHEELS} > /tmp/wheels.tar.gz; \
|
||||
else \
|
||||
TOKEN=$(curl -sSL "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${DOCKER_REPO}:pull" | \
|
||||
python -c "import sys, json; print json.load(sys.stdin)['token']") \
|
||||
&& BLOB=$(curl -sSL -H "Authorization: Bearer ${TOKEN}" https://registry.hub.docker.com/v2/${DOCKER_REPO}/manifests/${DOCKER_TAG} | \
|
||||
python -c "import sys, json; print json.load(sys.stdin)['fsLayers'][0]['blobSum']") \
|
||||
&& curl -sSL -H "Authorization: Bearer ${TOKEN}" https://registry.hub.docker.com/v2/${DOCKER_REPO}/blobs/${BLOB} > /tmp/wheels.tar.gz; \
|
||||
fi \
|
||||
&& git clone ${GIT_REPO} /tmp/${PROJECT} \
|
||||
&& if [ -n "$GIT_REF" ]; then \
|
||||
git --git-dir /tmp/${PROJECT}/.git fetch ${GIT_REF_REPO} ${GIT_REF} \
|
||||
&& git --git-dir /tmp/${PROJECT}/.git checkout FETCH_HEAD; \
|
||||
fi \
|
||||
&& mkdir /tmp/packages \
|
||||
&& tar xf /tmp/wheels.tar.gz -C /tmp/packages/ --strip-components=2 root/packages \
|
||||
&& curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py \
|
||||
&& python get-pip.py \
|
||||
&& rm get-pip.py \
|
||||
&& pip install --no-cache-dir --no-index --no-compile --find-links /tmp/packages --constraint /tmp/packages/upper-constraints.txt /tmp/${PROJECT} \
|
||||
&& groupadd -g 42424 ${PROJECT} \
|
||||
&& useradd -u 42424 -g ${PROJECT} -M -d /var/lib/${PROJECT} -s /usr/sbin/nologin -c "${PROJECT} user" ${PROJECT} \
|
||||
&& mkdir -p /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} \
|
||||
&& chown ${PROJECT}:${PROJECT} /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} \
|
||||
# common install end
|
||||
# Project specific command block start
|
||||
&& pip install --no-cache-dir --no-index --no-compile --find-links /tmp/packages --constraint /tmp/packages/upper-constraints.txt \
|
||||
python-memcached \
|
||||
pymysql \
|
||||
&& cp -rfv /tmp/${PROJECT}/etc/heat/* /etc/${PROJECT}/ \
|
||||
&& chown -R ${PROJECT}:${PROJECT} /etc/${PROJECT} \
|
||||
&& chown root:root /etc/${PROJECT}/policy.json \
|
||||
&& rm /etc/apache2/ports.conf /etc/apache2/sites-enabled/* /etc/apache2/sites-available/* \
|
||||
&& touch /etc/apache2/ports.conf \
|
||||
# Project specific command block end
|
||||
&& apt-get purge -y --auto-remove ca-certificates curl git \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /root/.cache \
|
||||
&& pip uninstall pip wheel -y \
|
||||
&& find / -type f -name "*.pyc" -delete
|
|
@ -1,59 +0,0 @@
|
|||
FROM ubuntu:xenial
|
||||
|
||||
ENV PROJECT=heat
|
||||
ARG DOCKER_REPO=yaodu/openstack-requirements
|
||||
ARG DOCKER_TAG=ubuntu
|
||||
ARG WHEELS
|
||||
ARG GIT_REPO=https://github.com/openstack/${PROJECT}
|
||||
ARG GIT_REF
|
||||
ARG GIT_REF_REPO=https://git.openstack.org/openstack/${PROJECT}
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
# Project specific packages start
|
||||
python \
|
||||
apache2 \
|
||||
libapache2-mod-wsgi \
|
||||
# Project specific packages end
|
||||
&& apt-get install -y --no-install-recommends ca-certificates curl git \
|
||||
# common install start
|
||||
&& if [ -n "$WHEELS" ]; then \
|
||||
curl -sSL ${WHEELS} > /tmp/wheels.tar.gz; \
|
||||
else \
|
||||
TOKEN=$(curl -sSL "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${DOCKER_REPO}:pull" | \
|
||||
python -c "import sys, json; print json.load(sys.stdin)['token']") \
|
||||
&& BLOB=$(curl -sSL -H "Authorization: Bearer ${TOKEN}" https://registry.hub.docker.com/v2/${DOCKER_REPO}/manifests/${DOCKER_TAG} | \
|
||||
python -c "import sys, json; print json.load(sys.stdin)['fsLayers'][0]['blobSum']") \
|
||||
&& curl -sSL -H "Authorization: Bearer ${TOKEN}" https://registry.hub.docker.com/v2/${DOCKER_REPO}/blobs/${BLOB} > /tmp/wheels.tar.gz; \
|
||||
fi \
|
||||
&& git clone ${GIT_REPO} /tmp/${PROJECT} \
|
||||
&& if [ -n "$GIT_REF" ]; then \
|
||||
git --git-dir /tmp/${PROJECT}/.git fetch ${GIT_REF_REPO} ${GIT_REF} \
|
||||
&& git --git-dir /tmp/${PROJECT}/.git checkout FETCH_HEAD; \
|
||||
fi \
|
||||
&& mkdir /tmp/packages \
|
||||
&& tar xf /tmp/wheels.tar.gz -C /tmp/packages/ --strip-components=2 root/packages \
|
||||
&& curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py \
|
||||
&& python get-pip.py \
|
||||
&& rm get-pip.py \
|
||||
&& pip install --no-cache-dir --no-index --no-compile --find-links /tmp/packages --constraint /tmp/packages/upper-constraints.txt /tmp/${PROJECT} \
|
||||
&& groupadd -g 42424 ${PROJECT} \
|
||||
&& useradd -u 42424 -g ${PROJECT} -M -d /var/lib/${PROJECT} -s /usr/sbin/nologin -c "${PROJECT} user" ${PROJECT} \
|
||||
&& mkdir -p /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} \
|
||||
&& chown ${PROJECT}:${PROJECT} /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} \
|
||||
# common install end
|
||||
# Project specific command block start
|
||||
&& pip install --no-cache-dir --no-index --no-compile --find-links /tmp/packages --constraint /tmp/packages/upper-constraints.txt \
|
||||
python-memcached \
|
||||
pymysql \
|
||||
&& cp -rfv /tmp/${PROJECT}/etc/heat/* /etc/${PROJECT}/ \
|
||||
&& chown -R ${PROJECT}:${PROJECT} /etc/${PROJECT} \
|
||||
&& chown root:root /etc/${PROJECT}/policy.json \
|
||||
&& rm /etc/apache2/ports.conf /etc/apache2/sites-enabled/* /etc/apache2/sites-available/* \
|
||||
&& touch /etc/apache2/ports.conf \
|
||||
# Project specific command block end
|
||||
&& apt-get purge -y --auto-remove ca-certificates curl git \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /root/.cache \
|
||||
&& pip uninstall pip wheel -y \
|
||||
&& find / -type f -name "*.pyc" -delete
|
|
@ -0,0 +1,18 @@
|
|||
FROM ubuntu:xenial
|
||||
|
||||
ENV PROJECT=heat
|
||||
ARG DOCKER_REPO=yaodu/openstack-requirements
|
||||
ARG DOCKER_TAG=ubuntu
|
||||
ARG WHEELS
|
||||
ARG GIT_REPO=https://github.com/openstack/${PROJECT}
|
||||
ARG GIT_REF
|
||||
ARG GIT_REF_REPO=https://git.openstack.org/openstack/${PROJECT}
|
||||
ARG SCRIPTS=https://github.com/yaodu/common/archive/0.1.2.tar.gz
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends python ca-certificates curl \
|
||||
&& curl -sSL $SCRIPTS | tar xz -C /tmp/ --strip-components=2 \
|
||||
&& /tmp/download.sh $DOCKER_REPO $DOCKER_TAG $WHEELS \
|
||||
&& /tmp/install.sh $PROJECT $GIT_REPO $GIT_REF_REPO $GIT_REF \
|
||||
&& /tmp/cleanup.sh
|
38
update.sh
38
update.sh
|
@ -1,38 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -x
|
||||
set -e
|
||||
set -u
|
||||
|
||||
COMMON_INSTALL=$(cat <<'END_HEREDOC'
|
||||
# common install start
|
||||
&& if [ -n "$WHEELS" ]; then \\\n\
|
||||
curl -sSL ${WHEELS} > /tmp/wheels.tar.gz; \\\n\
|
||||
else \\\n\
|
||||
TOKEN=$(curl -sSL "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${DOCKER_REPO}:pull" | \\\n\
|
||||
python -c "import sys, json; print json.load(sys.stdin)['token']") \\\n\
|
||||
&& BLOB=$(curl -sSL -H "Authorization: Bearer ${TOKEN}" https://registry.hub.docker.com/v2/${DOCKER_REPO}/manifests/${DOCKER_TAG} | \\\n\
|
||||
python -c "import sys, json; print json.load(sys.stdin)['fsLayers'][0]['blobSum']") \\\n\
|
||||
&& curl -sSL -H "Authorization: Bearer ${TOKEN}" https://registry.hub.docker.com/v2/${DOCKER_REPO}/blobs/${BLOB} > /tmp/wheels.tar.gz; \\\n\
|
||||
fi \\\n\
|
||||
&& git clone ${GIT_REPO} /tmp/${PROJECT} \\\n\
|
||||
&& if [ -n "$GIT_REF" ]; then \\\n\
|
||||
git --git-dir /tmp/${PROJECT}/.git fetch ${GIT_REF_REPO} ${GIT_REF} \\\n\
|
||||
&& git --git-dir /tmp/${PROJECT}/.git checkout FETCH_HEAD; \\\n\
|
||||
fi \\\n\
|
||||
&& mkdir /tmp/packages \\\n\
|
||||
&& tar xf /tmp/wheels.tar.gz -C /tmp/packages/ --strip-components=2 root/packages \\\n\
|
||||
&& curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py \\\n\
|
||||
&& python get-pip.py \\\n\
|
||||
&& rm get-pip.py \\\n\
|
||||
&& pip install --no-cache-dir --no-index --no-compile --find-links /tmp/packages --constraint /tmp/packages/upper-constraints.txt /tmp/${PROJECT} \\\n\
|
||||
&& groupadd -g 42424 ${PROJECT} \\\n\
|
||||
&& useradd -u 42424 -g ${PROJECT} -M -d /var/lib/${PROJECT} -s /usr/sbin/nologin -c "${PROJECT} user" ${PROJECT} \\\n\
|
||||
&& mkdir -p /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} \\\n\
|
||||
&& chown ${PROJECT}:${PROJECT} /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} \\\
|
||||
|
||||
END_HEREDOC
|
||||
)
|
||||
|
||||
for repo in $(ls dockerfiles/Dockerfile-*); do
|
||||
awk -i inplace -v install="${COMMON_INSTALL}" 'BEGIN {p=1} /^# common install start/ {print install; p=0} /^# common install end/ {p=1} p' ${repo}
|
||||
done
|
Loading…
Reference in New Issue