From 7bd15e7b10c669ed236160019e2f7bca740936af Mon Sep 17 00:00:00 2001 From: Daniel Hiltgen Date: Fri, 18 May 2018 10:36:34 -0700 Subject: [PATCH 01/39] CE package conversion This splits out the CLI into a discrete package and removes the engine from the engine package. Instead the engine is initialized via a post-inst script using the new CLI UX. Upstream-commit: 662e248f680eb49a9951a8b34125506b8f82dfed Component: packaging --- components/packaging/deb/Makefile | 6 +- components/packaging/deb/build-deb | 13 +- components/packaging/deb/common/control | 29 +++- ...mpletion => docker-ce-cli.bash-completion} | 0 .../deb/common/docker-ce-cli.install | 2 + ...ker-ce.manpages => docker-ce-cli.manpages} | 0 .../deb/common/docker-ce.docker.default | 20 --- .../deb/common/docker-ce.docker.init | 156 ------------------ .../deb/common/docker-ce.docker.upstart | 72 -------- .../packaging/deb/common/docker-ce.install | 11 -- .../packaging/deb/common/docker-ce.postinst | 4 + .../packaging/deb/common/docker-ce.udev | 3 - components/packaging/deb/common/docs | 2 +- components/packaging/deb/common/rules | 28 +--- 14 files changed, 42 insertions(+), 304 deletions(-) rename components/packaging/deb/common/{docker-ce.bash-completion => docker-ce-cli.bash-completion} (100%) create mode 100644 components/packaging/deb/common/docker-ce-cli.install rename components/packaging/deb/common/{docker-ce.manpages => docker-ce-cli.manpages} (100%) delete mode 100644 components/packaging/deb/common/docker-ce.docker.default delete mode 100644 components/packaging/deb/common/docker-ce.docker.init delete mode 100644 components/packaging/deb/common/docker-ce.docker.upstart delete mode 100644 components/packaging/deb/common/docker-ce.install delete mode 100644 components/packaging/deb/common/docker-ce.udev diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index cf1c668c18..39303bd519 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -1,11 +1,10 @@ SHELL:=/bin/bash ARCH:=$(shell uname -m) -ENGINE_DIR:=$(CURDIR)/../../engine CLI_DIR:=$(CURDIR)/../../cli -GITCOMMIT?=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD) +GITCOMMIT?=$(shell cd $(CLI_DIR) && git rev-parse --short HEAD) VERSION?=0.0.0-dev GO_VERSION:=1.10.3 -DEB_VERSION=$(shell ./gen-deb-ver $(ENGINE_DIR) "$(VERSION)") +DEB_VERSION=$(shell ./gen-deb-ver $(CLI_DIR) "$(VERSION)") CHOWN:=docker run --rm -v $(CURDIR):/v -w /v alpine chown EPOCH?=2 @@ -16,7 +15,6 @@ RUN=docker run --rm -i \ -e VERSION=$(word 2, $(DEB_VERSION)) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ -v $(CURDIR)/debbuild/$@:/build \ - -v $(ENGINE_DIR):/engine \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ debbuild-$@/$(ARCH) diff --git a/components/packaging/deb/build-deb b/components/packaging/deb/build-deb index bb25ffdd07..da4eb3f7d0 100755 --- a/components/packaging/deb/build-deb +++ b/components/packaging/deb/build-deb @@ -13,18 +13,9 @@ if [[ -z "$DEB_VERSION" ]]; then exit 1 fi -( - set -e - cd engine - # I want to rip this install-binaries script out so badly - for component in tini "proxy dynamic" "runc all" "containerd dynamic";do - TMP_GOPATH="/go" hack/dockerfile/install/install.sh $component - done -) - echo VERSION AAA $VERSION -VERSION=${VERSION:-$( cat engine/VERSION )} +VERSION=${VERSION:-$( cat cli/VERSION )} echo VERSION bbb $VERSION @@ -40,7 +31,7 @@ EOF # The space above at the start of the line for the debMaintainer is very important # Give the script a git commit because it wants it -export DOCKER_GITCOMMIT=${DOCKER_GITCOMMIT-$($GIT_COMMAND rev-parse --short HEAD)} +export DOCKER_GITCOMMIT=${DOCKER_GITCOMMIT-$(cd cli; $GIT_COMMAND rev-parse --short HEAD)} echo VERSION BBB $VERSION dpkg-buildpackage -uc -us -I.git diff --git a/components/packaging/deb/common/control b/components/packaging/deb/common/control index a12448f1a8..0f23b511d4 100644 --- a/components/packaging/deb/common/control +++ b/components/packaging/deb/common/control @@ -9,8 +9,8 @@ Vcs-Git: git://github.com/docker/docker.git Package: docker-ce Architecture: linux-any -Depends: iptables, ${misc:Depends}, ${perl:Depends}, ${shlibs:Depends} -Recommends: aufs-tools, +Depends: docker-ce-cli, containerd, ${shlibs:Depends} +Recommends: abufs-tools, ca-certificates, cgroupfs-mount | cgroup-lite, git, @@ -29,3 +29,28 @@ Description: Docker: the open-source application container engine language, framework or packaging system. That makes them great building blocks for deploying and scaling web apps, databases, and backend services without depending on a particular stack or provider. + +Source: docker-ce-cli +Section: admin +Priority: optional +Maintainer: Docker +Standards-Version: 3.9.6 +Homepage: https://dockerproject.org +Vcs-Browser: https://github.com/docker/cli +Vcs-Git: git://github.com/docker/cli.git +Package: docker-ce-cli +Architecture: linux-any +Depends: ${shlibs:Depends} +Recommends: +Conflicts: docker (<< 1.5~), docker.io, lxc-docker, lxc-docker-virtual-package, docker-engine, docker-engine-cs, docker-ee-cli +Replaces: +Description: Docker CLI: the open-source application container engine + Docker is an open source project to build, ship and run any application as a + lightweight container + . + Docker containers are both hardware-agnostic and platform-agnostic. This means + they can run anywhere, from your laptop to the largest EC2 compute instance and + everything in between - and they don't require you to use a particular + language, framework or packaging system. That makes them great building blocks + for deploying and scaling web apps, databases, and backend services without + depending on a particular stack or provider. diff --git a/components/packaging/deb/common/docker-ce.bash-completion b/components/packaging/deb/common/docker-ce-cli.bash-completion similarity index 100% rename from components/packaging/deb/common/docker-ce.bash-completion rename to components/packaging/deb/common/docker-ce-cli.bash-completion diff --git a/components/packaging/deb/common/docker-ce-cli.install b/components/packaging/deb/common/docker-ce-cli.install new file mode 100644 index 0000000000..caf2498041 --- /dev/null +++ b/components/packaging/deb/common/docker-ce-cli.install @@ -0,0 +1,2 @@ +cli/contrib/completion/fish/docker.fish usr/share/fish/vendor_completions.d/ +cli/contrib/completion/zsh/_docker usr/share/zsh/vendor-completions/ diff --git a/components/packaging/deb/common/docker-ce.manpages b/components/packaging/deb/common/docker-ce-cli.manpages similarity index 100% rename from components/packaging/deb/common/docker-ce.manpages rename to components/packaging/deb/common/docker-ce-cli.manpages diff --git a/components/packaging/deb/common/docker-ce.docker.default b/components/packaging/deb/common/docker-ce.docker.default deleted file mode 100644 index c4e93199b4..0000000000 --- a/components/packaging/deb/common/docker-ce.docker.default +++ /dev/null @@ -1,20 +0,0 @@ -# Docker Upstart and SysVinit configuration file - -# -# THIS FILE DOES NOT APPLY TO SYSTEMD -# -# Please see the documentation for "systemd drop-ins": -# https://docs.docker.com/engine/admin/systemd/ -# - -# Customize location of Docker binary (especially for development testing). -#DOCKERD="/usr/local/bin/dockerd" - -# Use DOCKER_OPTS to modify the daemon startup options. -#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4" - -# If you need Docker to use an HTTP proxy, it can also be specified here. -#export http_proxy="http://127.0.0.1:3128/" - -# This is also a handy place to tweak where Docker's temporary files go. -#export DOCKER_TMPDIR="/mnt/bigdrive/docker-tmp" diff --git a/components/packaging/deb/common/docker-ce.docker.init b/components/packaging/deb/common/docker-ce.docker.init deleted file mode 100644 index 9c8fa6be73..0000000000 --- a/components/packaging/deb/common/docker-ce.docker.init +++ /dev/null @@ -1,156 +0,0 @@ -#!/bin/sh -set -e - -### BEGIN INIT INFO -# Provides: docker -# Required-Start: $syslog $remote_fs -# Required-Stop: $syslog $remote_fs -# Should-Start: cgroupfs-mount cgroup-lite -# Should-Stop: cgroupfs-mount cgroup-lite -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Create lightweight, portable, self-sufficient containers. -# Description: -# Docker is an open-source project to easily create lightweight, portable, -# self-sufficient containers from any application. The same container that a -# developer builds and tests on a laptop can run at scale, in production, on -# VMs, bare metal, OpenStack clusters, public clouds and more. -### END INIT INFO - -export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin - -BASE=docker - -# modify these in /etc/default/$BASE (/etc/default/docker) -DOCKERD=/usr/bin/dockerd -# This is the pid file managed by docker itself -DOCKER_PIDFILE=/var/run/$BASE.pid -# This is the pid file created/managed by start-stop-daemon -DOCKER_SSD_PIDFILE=/var/run/$BASE-ssd.pid -DOCKER_LOGFILE=/var/log/$BASE.log -DOCKER_OPTS= -DOCKER_DESC="Docker" - -# Get lsb functions -. /lib/lsb/init-functions - -if [ -f /etc/default/$BASE ]; then - . /etc/default/$BASE -fi - -# Check docker is present -if [ ! -x $DOCKERD ]; then - log_failure_msg "$DOCKERD not present or not executable" - exit 1 -fi - -check_init() { - # see also init_is_upstart in /lib/lsb/init-functions (which isn't available in Ubuntu 12.04, or we'd use it directly) - if [ -x /sbin/initctl ] && /sbin/initctl version 2>/dev/null | grep -q upstart; then - log_failure_msg "$DOCKER_DESC is managed via upstart, try using service $BASE $1" - exit 1 - fi -} - -fail_unless_root() { - if [ "$(id -u)" != '0' ]; then - log_failure_msg "$DOCKER_DESC must be run as root" - exit 1 - fi -} - -cgroupfs_mount() { - # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount - if grep -v '^#' /etc/fstab | grep -q cgroup \ - || [ ! -e /proc/cgroups ] \ - || [ ! -d /sys/fs/cgroup ]; then - return - fi - if ! mountpoint -q /sys/fs/cgroup; then - mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup - fi - ( - cd /sys/fs/cgroup - for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do - mkdir -p $sys - if ! mountpoint -q $sys; then - if ! mount -n -t cgroup -o $sys cgroup $sys; then - rmdir $sys || true - fi - fi - done - ) -} - -case "$1" in - start) - check_init - - fail_unless_root - - cgroupfs_mount - - touch "$DOCKER_LOGFILE" - chgrp docker "$DOCKER_LOGFILE" - - ulimit -n 1048576 - - # Having non-zero limits causes performance problems due to accounting overhead - # in the kernel. We recommend using cgroups to do container-local accounting. - if [ "$BASH" ]; then - ulimit -u unlimited - else - ulimit -p unlimited - fi - - log_begin_msg "Starting $DOCKER_DESC: $BASE" - start-stop-daemon --start --background \ - --no-close \ - --exec "$DOCKERD" \ - --pidfile "$DOCKER_SSD_PIDFILE" \ - --make-pidfile \ - -- \ - -p "$DOCKER_PIDFILE" \ - $DOCKER_OPTS \ - >> "$DOCKER_LOGFILE" 2>&1 - log_end_msg $? - ;; - - stop) - check_init - fail_unless_root - if [ -f "$DOCKER_SSD_PIDFILE" ]; then - log_begin_msg "Stopping $DOCKER_DESC: $BASE" - start-stop-daemon --stop --pidfile "$DOCKER_SSD_PIDFILE" --retry 10 - log_end_msg $? - else - log_warning_msg "Docker already stopped - file $DOCKER_SSD_PIDFILE not found." - fi - ;; - - restart) - check_init - fail_unless_root - docker_pid=`cat "$DOCKER_SSD_PIDFILE" 2>/dev/null` - [ -n "$docker_pid" ] \ - && ps -p $docker_pid > /dev/null 2>&1 \ - && $0 stop - $0 start - ;; - - force-reload) - check_init - fail_unless_root - $0 restart - ;; - - status) - check_init - status_of_proc -p "$DOCKER_SSD_PIDFILE" "$DOCKERD" "$DOCKER_DESC" - ;; - - *) - echo "Usage: service docker {start|stop|restart|status}" - exit 1 - ;; -esac diff --git a/components/packaging/deb/common/docker-ce.docker.upstart b/components/packaging/deb/common/docker-ce.docker.upstart deleted file mode 100644 index d58f7d6ac8..0000000000 --- a/components/packaging/deb/common/docker-ce.docker.upstart +++ /dev/null @@ -1,72 +0,0 @@ -description "Docker daemon" - -start on (filesystem and net-device-up IFACE!=lo) -stop on runlevel [!2345] - -limit nofile 524288 1048576 - -# Having non-zero limits causes performance problems due to accounting overhead -# in the kernel. We recommend using cgroups to do container-local accounting. -limit nproc unlimited unlimited - -respawn - -kill timeout 20 - -pre-start script - # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount - if grep -v '^#' /etc/fstab | grep -q cgroup \ - || [ ! -e /proc/cgroups ] \ - || [ ! -d /sys/fs/cgroup ]; then - exit 0 - fi - if ! mountpoint -q /sys/fs/cgroup; then - mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup - fi - ( - cd /sys/fs/cgroup - for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do - mkdir -p $sys - if ! mountpoint -q $sys; then - if ! mount -n -t cgroup -o $sys cgroup $sys; then - rmdir $sys || true - fi - fi - done - ) -end script - -script - # modify these in /etc/default/$UPSTART_JOB (/etc/default/docker) - DOCKERD=/usr/bin/dockerd - DOCKER_OPTS= - if [ -f /etc/default/$UPSTART_JOB ]; then - . /etc/default/$UPSTART_JOB - fi - exec "$DOCKERD" $DOCKER_OPTS --raw-logs -end script - -# Don't emit "started" event until docker.sock is ready. -# See https://github.com/docker/docker/issues/6647 -post-start script - DOCKER_OPTS= - DOCKER_SOCKET= - if [ -f /etc/default/$UPSTART_JOB ]; then - . /etc/default/$UPSTART_JOB - fi - - if ! printf "%s" "$DOCKER_OPTS" | grep -qE -e '-H|--host'; then - DOCKER_SOCKET=/var/run/docker.sock - else - DOCKER_SOCKET=$(printf "%s" "$DOCKER_OPTS" | grep -oP -e '(-H|--host)\W*unix://\K(\S+)' | sed 1q) - fi - - if [ -n "$DOCKER_SOCKET" ]; then - while ! [ -e "$DOCKER_SOCKET" ]; do - initctl status $UPSTART_JOB | grep -qE "(stop|respawn)/" && exit 1 - echo "Waiting for $DOCKER_SOCKET" - sleep 0.1 - done - echo "$DOCKER_SOCKET is up" - fi -end script diff --git a/components/packaging/deb/common/docker-ce.install b/components/packaging/deb/common/docker-ce.install deleted file mode 100644 index 1e23903064..0000000000 --- a/components/packaging/deb/common/docker-ce.install +++ /dev/null @@ -1,11 +0,0 @@ -#engine/contrib/syntax/vim/doc/* /usr/share/vim/vimfiles/doc/ -#engine/contrib/syntax/vim/ftdetect/* /usr/share/vim/vimfiles/ftdetect/ -#engine/contrib/syntax/vim/syntax/* /usr/share/vim/vimfiles/syntax/ -engine/contrib/check-config.sh usr/share/docker-ce/contrib/ -cli/contrib/completion/fish/docker.fish usr/share/fish/vendor_completions.d/ -cli/contrib/completion/zsh/_docker usr/share/zsh/vendor-completions/ -systemd/docker.service lib/systemd/system/ -systemd/docker.socket lib/systemd/system/ -engine/contrib/mk* usr/share/docker-ce/contrib/ -engine/contrib/nuke-graph-directory.sh usr/share/docker-ce/contrib/ -engine/contrib/syntax/nano/Dockerfile.nanorc usr/share/nano/ diff --git a/components/packaging/deb/common/docker-ce.postinst b/components/packaging/deb/common/docker-ce.postinst index eeef6ca801..f0cb34de8e 100644 --- a/components/packaging/deb/common/docker-ce.postinst +++ b/components/packaging/deb/common/docker-ce.postinst @@ -7,6 +7,10 @@ case "$1" in if ! getent group docker > /dev/null; then groupadd --system docker fi + # TODO Needs upgrade vs. install logic handling here + if ctr --namespace docker container info dockerd 2&>1 > /dev/null ; then + docker engine init + fi fi ;; abort-*) diff --git a/components/packaging/deb/common/docker-ce.udev b/components/packaging/deb/common/docker-ce.udev deleted file mode 100644 index f934c01757..0000000000 --- a/components/packaging/deb/common/docker-ce.udev +++ /dev/null @@ -1,3 +0,0 @@ -# hide docker's loopback devices from udisks, and thus from user desktops -SUBSYSTEM=="block", ENV{DM_NAME}=="docker-*", ENV{UDISKS_PRESENTATION_HIDE}="1", ENV{UDISKS_IGNORE}="1" -SUBSYSTEM=="block", DEVPATH=="/devices/virtual/block/loop*", ATTR{loop/backing_file}=="/var/lib/docker/*", ENV{UDISKS_PRESENTATION_HIDE}="1", ENV{UDISKS_IGNORE}="1" diff --git a/components/packaging/deb/common/docs b/components/packaging/deb/common/docs index 073f189abb..1e89a49202 100644 --- a/components/packaging/deb/common/docs +++ b/components/packaging/deb/common/docs @@ -1 +1 @@ -engine/README.md +cli/README.md diff --git a/components/packaging/deb/common/rules b/components/packaging/deb/common/rules index f75a8eafce..27e05dcee7 100644 --- a/components/packaging/deb/common/rules +++ b/components/packaging/deb/common/rules @@ -10,41 +10,21 @@ override_dh_gencontrol: dh_gencontrol override_dh_auto_build: - cd engine && ./hack/make.sh dynbinary cd /go/src/github.com/docker/cli && LDFLAGS='' make VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages override_dh_auto_test: - ./engine/bundles/dynbinary-daemon/dockerd -v + #./engine/bundles/dynbinary-daemon/dockerd -v override_dh_strip: # Go has lots of problems with stripping, so just don't override_dh_auto_install: - mkdir -p debian/docker-ce/usr/bin - cp -aTL cli/build/docker debian/docker-ce/usr/bin/docker - cp -aT "$$(readlink -f engine/bundles/dynbinary-daemon/dockerd)" debian/docker-ce/usr/bin/dockerd - cp -aT /usr/local/bin/docker-proxy debian/docker-ce/usr/bin/docker-proxy - cp -aT /usr/local/bin/docker-containerd debian/docker-ce/usr/bin/docker-containerd - cp -aT /usr/local/bin/docker-containerd-shim debian/docker-ce/usr/bin/docker-containerd-shim - cp -aT /usr/local/bin/docker-containerd-ctr debian/docker-ce/usr/bin/docker-containerd-ctr - cp -aT /usr/local/bin/docker-runc debian/docker-ce/usr/bin/docker-runc - cp -aT /usr/local/bin/docker-init debian/docker-ce/usr/bin/docker-init - mkdir -p debian/docker-ce/usr/lib/docker - -override_dh_installinit: - # use "docker" as our service name, not "docker-ce" - dh_installinit --name=docker -ifeq (true, $(SYSTEMD_GT_227)) - $(warning "Setting TasksMax=infinity") - sed -i -- 's/#TasksMax=infinity/TasksMax=infinity/' debian/docker-ce/lib/systemd/system/docker.service -endif - -override_dh_installudev: - # match our existing priority - dh_installudev --priority=z80 + mkdir -p debian/docker-ce-cli/usr/bin + cp -aTL cli/build/docker debian/docker-ce-cli/usr/bin/docker override_dh_install: dh_install + # TODO Can we do this from within our container? dh_apparmor --profile-name=docker-ce -pdocker-ce override_dh_shlibdeps: From d2ad7723bee97c44c5a7700133f350d93fe6331c Mon Sep 17 00:00:00 2001 From: Daniel Hiltgen Date: Thu, 2 Aug 2018 16:53:29 -0700 Subject: [PATCH 02/39] Address review comments on PR #128 Upstream-commit: 0cd6b38d6dbf77a661030303e5cfeb7b26f60d82 Component: packaging --- components/packaging/deb/common/control | 4 ++-- components/packaging/deb/common/rules | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/components/packaging/deb/common/control b/components/packaging/deb/common/control index 0f23b511d4..46f21f56ad 100644 --- a/components/packaging/deb/common/control +++ b/components/packaging/deb/common/control @@ -3,7 +3,7 @@ Section: admin Priority: optional Maintainer: Docker Standards-Version: 3.9.6 -Homepage: https://dockerproject.org +Homepage: https://docker.com Vcs-Browser: https://github.com/docker/docker Vcs-Git: git://github.com/docker/docker.git @@ -35,7 +35,7 @@ Section: admin Priority: optional Maintainer: Docker Standards-Version: 3.9.6 -Homepage: https://dockerproject.org +Homepage: https://docker.com Vcs-Browser: https://github.com/docker/cli Vcs-Git: git://github.com/docker/cli.git Package: docker-ce-cli diff --git a/components/packaging/deb/common/rules b/components/packaging/deb/common/rules index 27e05dcee7..3e1cd64c35 100644 --- a/components/packaging/deb/common/rules +++ b/components/packaging/deb/common/rules @@ -12,9 +12,6 @@ override_dh_gencontrol: override_dh_auto_build: cd /go/src/github.com/docker/cli && LDFLAGS='' make VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages -override_dh_auto_test: - #./engine/bundles/dynbinary-daemon/dockerd -v - override_dh_strip: # Go has lots of problems with stripping, so just don't From 46906a5687cfc83046f6c6e03b34b61e11c2be95 Mon Sep 17 00:00:00 2001 From: Jose Bigio Date: Thu, 2 Aug 2018 11:32:44 -0700 Subject: [PATCH 03/39] Build docker image with engine binary on multiple arches Signed-off-by: Jose Bigio Upstream-commit: 2dfaf0dd0fa7b7a7aef76d1254b2b48dc04d0211 Component: packaging --- components/packaging/Jenkinsfile | 30 +++++++++++++++++++ components/packaging/Makefile | 15 +++++++++- .../image/{Dockerfile => Dockerfile.engine} | 0 components/packaging/image/Makefile | 17 +++++++---- 4 files changed, 56 insertions(+), 6 deletions(-) rename components/packaging/image/{Dockerfile => Dockerfile.engine} (100%) diff --git a/components/packaging/Jenkinsfile b/components/packaging/Jenkinsfile index 5ef5a94f2a..0e1b4dc760 100644 --- a/components/packaging/Jenkinsfile +++ b/components/packaging/Jenkinsfile @@ -1,5 +1,23 @@ #!groovy + +def genBranch(String arch) { + return [ + "${arch}": { -> + stage("Build engine image on ${arch}") { + wrappedNode(label: "linux&&${arch}", cleanWorkspace: true) { + try { + checkout scm + sh("git clone https://github.com/moby/moby.git engine") + sh('make ENGINE_DIR=$(pwd)/engine image') + } finally { + sh('make ENGINE_DIR=$(pwd)/engine clean-image clean-engine') + } + } + } + }] +} + test_steps = [ 'deb': { -> stage('Ubuntu Xenial Debian Package') { @@ -33,4 +51,16 @@ test_steps = [ }, ] +arches = [ + "x86_64", + "s390x", + "ppc64le", + "aarch64", + "armhf" +] + +arches.each { + test_steps << genBranch(it) +} + parallel(test_steps) diff --git a/components/packaging/Makefile b/components/packaging/Makefile index ff8d0e876a..2a8f0fb9c9 100644 --- a/components/packaging/Makefile +++ b/components/packaging/Makefile @@ -3,14 +3,27 @@ ENGINE_DIR:=$(CURDIR)/../engine CLI_DIR:=$(CURDIR)/../cli VERSION?=0.0.0-dev DOCKER_GITCOMMIT:=abcdefg +STATIC_VERSION=$(shell ../static/gen-static-ver $(ENGINE_DIR) $(VERSION)) GO_VERSION:=1.10.3 +# Taken from: https://www.cmcrossroads.com/article/printing-value-makefile-variable +print-% : ; @echo $($*) + .PHONY: help help: ## show make targets @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) +.PHONY: clean-engine +clean-engine: + rm -rf $(ENGINE_DIR) + +.PHONY: clean-image +clean-image: + $(MAKE) ENGINE_DIR=$(ENGINE_DIR) -C image clean + + .PHONY: clean -clean: ## remove build artifacts +clean: clean-engine clean-image ## remove build artifacts $(MAKE) -C rpm clean $(MAKE) -C deb clean $(MAKE) -C static clean diff --git a/components/packaging/image/Dockerfile b/components/packaging/image/Dockerfile.engine similarity index 100% rename from components/packaging/image/Dockerfile rename to components/packaging/image/Dockerfile.engine diff --git a/components/packaging/image/Makefile b/components/packaging/image/Makefile index eee5ce1aaf..01b3842243 100644 --- a/components/packaging/image/Makefile +++ b/components/packaging/image/Makefile @@ -4,6 +4,7 @@ CLI_DIR:=$(CURDIR)/../../cli VERSION?=0.0.0-dev STATIC_VERSION=$(shell ../static/gen-static-ver $(ENGINE_DIR) $(VERSION)) DOCKER_HUB_ORG?=docker +ARCH=$(uname -m) ENGINE_IMAGE?=engine-community .PHONY: help @@ -12,18 +13,24 @@ help: ## show make targets .PHONY: clean clean: ## remove build artifacts - docker rmi $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION) + -docker rmi $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION) .PHONY: image image: image-linux + +$(ENGINE_DIR)/Dockerfile.engine: + cp Dockerfile.engine $(ENGINE_DIR) + +# builds across multiple archs because the base images +# utilize manifests .PHONY: image-linux -image-linux: - docker build -t $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION) \ +image-linux: $(ENGINE_DIR)/Dockerfile.engine + docker build -t $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH) \ --build-arg VERSION=$(STATIC_VERSION) \ --build-arg DOCKER_GITCOMMIT=$(cd $(ENGINE_DIR) && git rev-parse --short=7 HEAD) \ - --file ./Dockerfile $(ENGINE_DIR) + --file $< $(ENGINE_DIR) .PHONY: release release: - docker push $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION) + docker push $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH) From 5c8dc24b07cc7d210149537efdb01fcec8f6effc Mon Sep 17 00:00:00 2001 From: Jose Bigio Date: Tue, 7 Aug 2018 10:22:58 -0700 Subject: [PATCH 04/39] Don't delete the engine when cleaning Signed-off-by: Jose Bigio Upstream-commit: 16e6737bf2976e83c4c140c95ae69d04905d150f Component: packaging --- components/packaging/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/packaging/Makefile b/components/packaging/Makefile index 2a8f0fb9c9..a26c7cdd3e 100644 --- a/components/packaging/Makefile +++ b/components/packaging/Makefile @@ -23,7 +23,7 @@ clean-image: .PHONY: clean -clean: clean-engine clean-image ## remove build artifacts +clean: clean-image ## remove build artifacts $(MAKE) -C rpm clean $(MAKE) -C deb clean $(MAKE) -C static clean From d72fa21d55990afc85c31d6264ac8208c620037d Mon Sep 17 00:00:00 2001 From: Jose Bigio Date: Tue, 7 Aug 2018 13:06:47 -0700 Subject: [PATCH 05/39] Add tar targets for engine image Signed-off-by: Jose Bigio Upstream-commit: 2ffde00d61af1074e100ca0c725dbd4f685299a1 Component: packaging --- components/packaging/deb/Makefile | 20 ++++++++++++-------- components/packaging/image/Makefile | 5 +++-- components/packaging/rpm/Makefile | 10 +++++++--- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 39303bd519..b7c0bd58ed 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -28,6 +28,10 @@ clean: ## remove build artifacts [ ! -d debbuild ] || $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild $(RM) -r debbuild +engine-$(ARCH).tar: + $(MAKE) -C ../image image-linux + docker save -o $@ $(shell cat ../image/image-linux) + .PHONY: deb deb: ubuntu debian raspbian ## build all deb packages @@ -41,49 +45,49 @@ debian: debian-stretch debian-jessie ## build all debian deb packages raspbian: raspbian-stretch debian-jessie ## build all raspbian deb packages .PHONY: ubuntu-xenial -ubuntu-xenial: ## build ubuntu xenial deb packages +ubuntu-xenial: engine-$(ARCH).tar ## build ubuntu xenial deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: ubuntu-trusty -ubuntu-trusty: ## build ubuntu trusty deb packages +ubuntu-trusty: engine-$(ARCH).tar ## build ubuntu trusty deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: ubuntu-bionic -ubuntu-bionic: ## build ubuntu bionic deb packages +ubuntu-bionic: engine-$(ARCH).tar ## build ubuntu bionic deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: debian-buster -debian-buster: ## build debian buster deb packages +debian-buster: engine-$(ARCH).tar ## build debian buster deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: debian-jessie -debian-jessie: ## build debian jessie deb packages +debian-jessie: engine-$(ARCH).tar ## build debian jessie deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: debian-stretch -debian-stretch: ## build debian stretch deb packages +debian-stretch: engine-$(ARCH).tar ## build debian stretch deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: raspbian-jessie -raspbian-jessie: ## build raspbian jessie deb packages +raspbian-jessie: engine-$(ARCH).tar ## build raspbian jessie deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: raspbian-stretch -raspbian-stretch: ## build raspbian stretch deb packages +raspbian-stretch: engine-$(ARCH).tar ## build raspbian stretch deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ diff --git a/components/packaging/image/Makefile b/components/packaging/image/Makefile index 01b3842243..1c57451c2b 100644 --- a/components/packaging/image/Makefile +++ b/components/packaging/image/Makefile @@ -4,7 +4,7 @@ CLI_DIR:=$(CURDIR)/../../cli VERSION?=0.0.0-dev STATIC_VERSION=$(shell ../static/gen-static-ver $(ENGINE_DIR) $(VERSION)) DOCKER_HUB_ORG?=docker -ARCH=$(uname -m) +ARCH=$(shell uname -m) ENGINE_IMAGE?=engine-community .PHONY: help @@ -14,6 +14,7 @@ help: ## show make targets .PHONY: clean clean: ## remove build artifacts -docker rmi $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION) + -rm -f image-linux .PHONY: image image: image-linux @@ -24,12 +25,12 @@ $(ENGINE_DIR)/Dockerfile.engine: # builds across multiple archs because the base images # utilize manifests -.PHONY: image-linux image-linux: $(ENGINE_DIR)/Dockerfile.engine docker build -t $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH) \ --build-arg VERSION=$(STATIC_VERSION) \ --build-arg DOCKER_GITCOMMIT=$(cd $(ENGINE_DIR) && git rev-parse --short=7 HEAD) \ --file $< $(ENGINE_DIR) + echo $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH) > $@ .PHONY: release release: diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index c0fe38599d..bcad28cfdd 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -40,20 +40,24 @@ fedora: fedora-28 fedora-27 fedora-26 ## build all fedora rpm packages .PHONY: centos centos: centos-7 ## build all centos rpm packages +engine-$(ARCH).tar: + $(MAKE) -C ../image image-linux + docker save $(shell cat ../image/image-linux) > $@ + .PHONY: fedora-28 -fedora-28: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-28 rpm packages +fedora-28: engine-$(ARCH).tar rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-28 rpm packages docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: fedora-27 -fedora-27: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-27 rpm packages +fedora-27:engine-$(ARCH).tar rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-27 rpm packages docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: centos-7 -centos-7: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build centos-7 rpm packages +centos-7:engine-$(ARCH).tar rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build centos-7 rpm packages docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild From 3570421f625123be7715a1a5053bc5e132d2a426 Mon Sep 17 00:00:00 2001 From: Jose Bigio Date: Tue, 7 Aug 2018 13:13:02 -0700 Subject: [PATCH 06/39] Remove shell directive so target will work Signed-off-by: Jose Bigio Upstream-commit: 93fcc8443b504c94beaef697ec6f27748b40d656 Component: packaging --- components/packaging/deb/Makefile | 2 +- components/packaging/image/Makefile | 4 ++++ components/packaging/rpm/Makefile | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index b7c0bd58ed..70402d9802 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -30,7 +30,7 @@ clean: ## remove build artifacts engine-$(ARCH).tar: $(MAKE) -C ../image image-linux - docker save -o $@ $(shell cat ../image/image-linux) + docker save -o $@ $$(cat ../image/image-linux) .PHONY: deb deb: ubuntu debian raspbian ## build all deb packages diff --git a/components/packaging/image/Makefile b/components/packaging/image/Makefile index 1c57451c2b..381093fc70 100644 --- a/components/packaging/image/Makefile +++ b/components/packaging/image/Makefile @@ -32,6 +32,10 @@ image-linux: $(ENGINE_DIR)/Dockerfile.engine --file $< $(ENGINE_DIR) echo $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH) > $@ +engine-$(ARCH).tar: image-linux + docker save -o $@ $$(cat $<) + + .PHONY: release release: docker push $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH) diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index bcad28cfdd..acc39144be 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -42,7 +42,7 @@ centos: centos-7 ## build all centos rpm packages engine-$(ARCH).tar: $(MAKE) -C ../image image-linux - docker save $(shell cat ../image/image-linux) > $@ + docker save -o $@ $$(cat ../image/image-linux) .PHONY: fedora-28 fedora-28: engine-$(ARCH).tar rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-28 rpm packages From 13fe238674bae8c11fa055c6f00d80af894aabc7 Mon Sep 17 00:00:00 2001 From: Jose Bigio Date: Tue, 7 Aug 2018 13:22:53 -0700 Subject: [PATCH 07/39] Add extra dollar in Makefile/image Signed-off-by: Jose Bigio Upstream-commit: 65a9bb677ebffccb2d5d1002c3e1bdd4dd46d76c Component: packaging --- components/packaging/image/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/packaging/image/Makefile b/components/packaging/image/Makefile index 381093fc70..180ee81b82 100644 --- a/components/packaging/image/Makefile +++ b/components/packaging/image/Makefile @@ -28,7 +28,7 @@ $(ENGINE_DIR)/Dockerfile.engine: image-linux: $(ENGINE_DIR)/Dockerfile.engine docker build -t $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH) \ --build-arg VERSION=$(STATIC_VERSION) \ - --build-arg DOCKER_GITCOMMIT=$(cd $(ENGINE_DIR) && git rev-parse --short=7 HEAD) \ + --build-arg DOCKER_GITCOMMIT=$$(cd $(ENGINE_DIR) && git rev-parse --short=7 HEAD) \ --file $< $(ENGINE_DIR) echo $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH) > $@ From 7c303cf2e57b78820b38bbe40fdc1cc172242055 Mon Sep 17 00:00:00 2001 From: Jose Bigio Date: Tue, 7 Aug 2018 14:28:11 -0700 Subject: [PATCH 08/39] Add top level make target Signed-off-by: Jose Bigio Upstream-commit: 9bb08342efcf1d9e69cbeca9b820309c9622bef5 Component: packaging --- components/packaging/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/packaging/Makefile b/components/packaging/Makefile index a26c7cdd3e..64664d8ac5 100644 --- a/components/packaging/Makefile +++ b/components/packaging/Makefile @@ -3,6 +3,7 @@ ENGINE_DIR:=$(CURDIR)/../engine CLI_DIR:=$(CURDIR)/../cli VERSION?=0.0.0-dev DOCKER_GITCOMMIT:=abcdefg +ARCH=$(shell uname -m) STATIC_VERSION=$(shell ../static/gen-static-ver $(ENGINE_DIR) $(VERSION)) GO_VERSION:=1.10.3 @@ -57,6 +58,9 @@ image: ## build static-compiled packages $(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) GO_VERSION=$(GO_VERSION) $${p}; \ done +engine-$(ARCH).tar: + $(MAKE) -C image $@ + .PHONY: release release: $(MAKE) -C image $@ From 31a1aed04a3e1b88d9906e19877bca056863d7e0 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 10 Aug 2018 16:08:29 +0000 Subject: [PATCH 09/39] Change final image to be a scratch image Signed-off-by: Eli Uriegas Upstream-commit: 08c4ef675e42077a7407143f5e94d53b198b1a0f Component: packaging --- components/packaging/image/Dockerfile.engine | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/components/packaging/image/Dockerfile.engine b/components/packaging/image/Dockerfile.engine index 3c762ac86e..15e1f00047 100644 --- a/components/packaging/image/Dockerfile.engine +++ b/components/packaging/image/Dockerfile.engine @@ -54,11 +54,9 @@ RUN source /binaries-commits && \ make BUILDTAGS='seccomp apparmor' && make install # Final docker image -FROM alpine:3.7 -RUN apk --update add ca-certificates iptables net-tools libseccomp git && \ - rm -rf /var/cache/apk/* -COPY --from=dockerd-builder /sbin/dockerd /usr/local/sbin/ -COPY --from=proxy-builder /sbin/docker-proxy /usr/local/sbin/ -COPY --from=init-builder /sbin/docker-init /usr/local/sbin/ -COPY --from=runc-builder /usr/local/sbin/runc /usr/local/sbin/ -ENTRYPOINT ["/usr/local/sbin/dockerd"] +FROM scratch +COPY --from=dockerd-builder /sbin/dockerd /sbin/ +COPY --from=proxy-builder /sbin/docker-proxy /sbin/ +COPY --from=init-builder /sbin/docker-init /sbin/ +COPY --from=runc-builder /usr/local/sbin/runc /sbin/ +ENTRYPOINT ["/sbin/dockerd"] From 1f4ebac506363a65d3e2a523b31de9e1c5f4cf48 Mon Sep 17 00:00:00 2001 From: Jose Bigio Date: Fri, 10 Aug 2018 13:12:48 -0700 Subject: [PATCH 10/39] Fix static version variable Signed-off-by: Jose Bigio Upstream-commit: 507c9f84ccc3f83c978aeefa2f0377ed0c14c3b8 Component: packaging --- components/packaging/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/packaging/Makefile b/components/packaging/Makefile index 64664d8ac5..3dfabe68a8 100644 --- a/components/packaging/Makefile +++ b/components/packaging/Makefile @@ -4,7 +4,7 @@ CLI_DIR:=$(CURDIR)/../cli VERSION?=0.0.0-dev DOCKER_GITCOMMIT:=abcdefg ARCH=$(shell uname -m) -STATIC_VERSION=$(shell ../static/gen-static-ver $(ENGINE_DIR) $(VERSION)) +STATIC_VERSION=$(shell static/gen-static-ver $(ENGINE_DIR) $(VERSION)) GO_VERSION:=1.10.3 # Taken from: https://www.cmcrossroads.com/article/printing-value-makefile-variable From f395016eaa830892acf62f93aaf7dd607654d888 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 10 Aug 2018 21:33:59 +0000 Subject: [PATCH 11/39] Change runc compilation to static Signed-off-by: Eli Uriegas Upstream-commit: 1cd96d5f686b389920ba01d0b230d7c29148e8ba Component: packaging --- components/packaging/image/Dockerfile.engine | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/packaging/image/Dockerfile.engine b/components/packaging/image/Dockerfile.engine index 15e1f00047..1da4d134e3 100644 --- a/components/packaging/image/Dockerfile.engine +++ b/components/packaging/image/Dockerfile.engine @@ -51,7 +51,7 @@ RUN git clone https://github.com/opencontainers/runc.git /go/src/github.com/open WORKDIR /go/src/github.com/opencontainers/runc RUN source /binaries-commits && \ git checkout -q "$RUNC_COMMIT" && \ - make BUILDTAGS='seccomp apparmor' && make install + make BUILDTAGS='seccomp apparmor' static && make install # Final docker image FROM scratch From 4ae3a833489f7cfe8558613a926aff82cd67cb2b Mon Sep 17 00:00:00 2001 From: Andrew Hsu Date: Sat, 11 Aug 2018 00:09:13 +0000 Subject: [PATCH 12/39] DISABLE_WARN_OUTSIDE_CONTAINER when building RPMs This will save time waiting for timeout to expire. Upstream-commit: 11a6221a830d7ffc3291e5b8749e364b18e07626 Component: packaging --- components/packaging/rpm/centos-7/docker-ce.spec | 2 +- components/packaging/rpm/fedora-27/docker-ce.spec | 2 +- components/packaging/rpm/fedora-28/docker-ce.spec | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/packaging/rpm/centos-7/docker-ce.spec b/components/packaging/rpm/centos-7/docker-ce.spec index 41318c4af9..cf061b94a0 100644 --- a/components/packaging/rpm/centos-7/docker-ce.spec +++ b/components/packaging/rpm/centos-7/docker-ce.spec @@ -64,7 +64,7 @@ mkdir -p /go/src/github.com/docker rm -f /go/src/github.com/docker/cli ln -s /root/rpmbuild/BUILD/src/cli /go/src/github.com/docker/cli pushd /go/src/github.com/docker/cli -make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli +DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli popd pushd engine for component in tini "proxy dynamic" "runc all" "containerd dynamic";do diff --git a/components/packaging/rpm/fedora-27/docker-ce.spec b/components/packaging/rpm/fedora-27/docker-ce.spec index cc13455dd1..fae14370ba 100644 --- a/components/packaging/rpm/fedora-27/docker-ce.spec +++ b/components/packaging/rpm/fedora-27/docker-ce.spec @@ -64,7 +64,7 @@ mkdir -p /go/src/github.com/docker rm -f /go/src/github.com/docker/cli ln -s /root/rpmbuild/BUILD/src/cli /go/src/github.com/docker/cli pushd /go/src/github.com/docker/cli -make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli +DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli popd pushd engine for component in tini "proxy dynamic" "runc all" "containerd dynamic";do diff --git a/components/packaging/rpm/fedora-28/docker-ce.spec b/components/packaging/rpm/fedora-28/docker-ce.spec index cc13455dd1..fae14370ba 100644 --- a/components/packaging/rpm/fedora-28/docker-ce.spec +++ b/components/packaging/rpm/fedora-28/docker-ce.spec @@ -64,7 +64,7 @@ mkdir -p /go/src/github.com/docker rm -f /go/src/github.com/docker/cli ln -s /root/rpmbuild/BUILD/src/cli /go/src/github.com/docker/cli pushd /go/src/github.com/docker/cli -make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli +DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli popd pushd engine for component in tini "proxy dynamic" "runc all" "containerd dynamic";do From b290116fb425f64ae3357f3f72f2ca875ca0fab8 Mon Sep 17 00:00:00 2001 From: Andrew Hsu Date: Sun, 12 Aug 2018 07:46:30 +0000 Subject: [PATCH 13/39] hardcode epoch so yum-builddep will work Looks like yum-builddep will only work if rpmlint passed on the spec file and the spec file errors out on Epoch not being hardcoded. Signed-off-by: Andrew Hsu Upstream-commit: 42b49f6556022ecba47801f4639ddbc7864c9fe0 Component: packaging --- components/packaging/rpm/Makefile | 2 -- components/packaging/rpm/centos-7/docker-ce.spec | 2 +- components/packaging/rpm/fedora-27/docker-ce.spec | 2 +- components/packaging/rpm/fedora-28/docker-ce.spec | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index c0fe38599d..edcade9976 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -5,10 +5,8 @@ GITCOMMIT=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD) VERSION?=0.0.0-dev GO_VERSION:=1.10.3 GEN_RPM_VER=$(shell ./gen-rpm-ver $(ENGINE_DIR) $(VERSION)) -EPOCH?=2 CHOWN=docker run --rm -i -v $(CURDIR):/v -w /v alpine chown RPMBUILD=docker run --privileged --rm -i\ - -e EPOCH="$(EPOCH)" \ -v $(CURDIR)/rpmbuild/SOURCES:/root/rpmbuild/SOURCES \ -v $(CURDIR)/rpmbuild/BUILD:/root/rpmbuild/BUILD \ -v $(CURDIR)/rpmbuild/BUILDROOT:/root/rpmbuild/BUILDROOT \ diff --git a/components/packaging/rpm/centos-7/docker-ce.spec b/components/packaging/rpm/centos-7/docker-ce.spec index cf061b94a0..0aafe77923 100644 --- a/components/packaging/rpm/centos-7/docker-ce.spec +++ b/components/packaging/rpm/centos-7/docker-ce.spec @@ -1,7 +1,7 @@ Name: docker-ce Version: %{_version} Release: %{_release}%{?dist} -Epoch: %{getenv:EPOCH} +Epoch: 2 Summary: The open-source application container engine Group: Tools/Docker License: ASL 2.0 diff --git a/components/packaging/rpm/fedora-27/docker-ce.spec b/components/packaging/rpm/fedora-27/docker-ce.spec index fae14370ba..0d62e038d5 100644 --- a/components/packaging/rpm/fedora-27/docker-ce.spec +++ b/components/packaging/rpm/fedora-27/docker-ce.spec @@ -1,7 +1,7 @@ Name: docker-ce Version: %{_version} Release: %{_release}%{?dist} -Epoch: %{getenv:EPOCH} +Epoch: 2 Summary: The open-source application container engine Group: Tools/Docker License: ASL 2.0 diff --git a/components/packaging/rpm/fedora-28/docker-ce.spec b/components/packaging/rpm/fedora-28/docker-ce.spec index fae14370ba..0d62e038d5 100644 --- a/components/packaging/rpm/fedora-28/docker-ce.spec +++ b/components/packaging/rpm/fedora-28/docker-ce.spec @@ -1,7 +1,7 @@ Name: docker-ce Version: %{_version} Release: %{_release}%{?dist} -Epoch: %{getenv:EPOCH} +Epoch: 2 Summary: The open-source application container engine Group: Tools/Docker License: ASL 2.0 From 26c6ae977006a0b0de4cd43988c9a4adb8cace12 Mon Sep 17 00:00:00 2001 From: Andrew Hsu Date: Sun, 12 Aug 2018 07:48:37 +0000 Subject: [PATCH 14/39] refactor centos-7 Dockerfile for multi-stage Also moved package deps into spec file BuildRequires. Had to hard-code Epoch in spec file in order to realize deps with yum-builddep. Signed-off-by: Andrew Hsu Upstream-commit: 784a53cec5061e6a718acc3a7104c61215c15078 Component: packaging --- .../packaging/rpm/centos-7/Dockerfile.aarch64 | 34 ++++++------------- .../packaging/rpm/centos-7/Dockerfile.x86_64 | 34 ++++++------------- .../packaging/rpm/centos-7/docker-ce.spec | 9 +++++ 3 files changed, 31 insertions(+), 46 deletions(-) diff --git a/components/packaging/rpm/centos-7/Dockerfile.aarch64 b/components/packaging/rpm/centos-7/Dockerfile.aarch64 index 53517be33f..591216bcc3 100644 --- a/components/packaging/rpm/centos-7/Dockerfile.aarch64 +++ b/components/packaging/rpm/centos-7/Dockerfile.aarch64 @@ -1,33 +1,21 @@ -FROM arm64v8/centos:7 -RUN yum groupinstall -y "Development Tools" -RUN yum -y swap -- remove systemd-container systemd-container-libs -- install systemd systemd-libs -RUN yum install -y \ - glibc-static \ - btrfs-progs-devel \ - device-mapper-devel \ - libseccomp-devel \ - libselinux-devel \ - libtool-ltdl-devel \ - selinux-policy-devel \ - systemd-devel \ - pkgconfig \ - tar \ - git \ - cmake \ - rpmdevtools \ - vim-common - +FROM alpine:latest as golang +RUN apk add curl ARG GO_VERSION +RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local + +FROM centos:7 ENV DISTRO centos ENV SUITE 7 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local -RUN mkdir -p /go ENV GOPATH=/go -ENV PATH $PATH:/usr/local/go/bin:/go/bin +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec +RUN yum install -y rpm-build rpmlint +RUN rpmlint /root/rpmbuild/SPECS/docker-ce.spec # make sure spec file is ok before installing build deps +RUN yum-builddep -y /root/rpmbuild/SPECS/docker-ce.spec # this always exits 0 so need to rpmlint before running +RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/centos-7/Dockerfile.x86_64 b/components/packaging/rpm/centos-7/Dockerfile.x86_64 index 7cdc495480..64e7e12301 100644 --- a/components/packaging/rpm/centos-7/Dockerfile.x86_64 +++ b/components/packaging/rpm/centos-7/Dockerfile.x86_64 @@ -1,33 +1,21 @@ -FROM centos:7 -RUN yum groupinstall -y "Development Tools" -RUN yum -y swap -- remove systemd-container systemd-container-libs -- install systemd systemd-libs -RUN yum install -y \ - glibc-static \ - btrfs-progs-devel \ - device-mapper-devel \ - libseccomp-devel \ - libselinux-devel \ - libtool-ltdl-devel \ - selinux-policy-devel \ - systemd-devel \ - pkgconfig \ - tar \ - git \ - cmake \ - rpmdevtools \ - vim-common - +FROM alpine:latest as golang +RUN apk add curl ARG GO_VERSION +RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local + +FROM centos:7 ENV DISTRO centos ENV SUITE 7 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local -RUN mkdir -p /go ENV GOPATH=/go -ENV PATH $PATH:/usr/local/go/bin:/go/bin +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec +RUN yum install -y rpm-build rpmlint +RUN rpmlint /root/rpmbuild/SPECS/docker-ce.spec # make sure spec file is ok before installing build deps +RUN yum-builddep -y /root/rpmbuild/SPECS/docker-ce.spec # this always exits 0 so need to rpmlint before running +RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/centos-7/docker-ce.spec b/components/packaging/rpm/centos-7/docker-ce.spec index 0aafe77923..f20f7cb614 100644 --- a/components/packaging/rpm/centos-7/docker-ce.spec +++ b/components/packaging/rpm/centos-7/docker-ce.spec @@ -17,6 +17,15 @@ Packager: Docker %global is_systemd 1 %global with_selinux 1 +BuildRequires: make +BuildRequires: cmake +BuildRequires: gcc +BuildRequires: git +BuildRequires: glibc-static +BuildRequires: libtool-ltdl-devel +BuildRequires: libseccomp-devel +BuildRequires: device-mapper-devel +BuildRequires: btrfs-progs-devel BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(libsystemd-journal) From 1bf6cebb40b98ce595c4c6e45f54186a9e136cd9 Mon Sep 17 00:00:00 2001 From: Andrew Hsu Date: Sat, 11 Aug 2018 02:09:34 +0000 Subject: [PATCH 15/39] refactor fedora-27 Dockerfile for multi-stage Also moved package deps into spec file BuildRequires. Had to hard-code Epoch in spec file in order to realize deps with yum-builddep. Signed-off-by: Andrew Hsu Upstream-commit: b09bb012dd220e822aa6e90ef20d9cb83ccada8b Component: packaging --- .../packaging/rpm/fedora-27/Dockerfile.aarch64 | 15 +++++++++------ .../packaging/rpm/fedora-27/Dockerfile.x86_64 | 15 +++++++++------ components/packaging/rpm/fedora-27/docker-ce.spec | 9 +++++++++ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/components/packaging/rpm/fedora-27/Dockerfile.aarch64 b/components/packaging/rpm/fedora-27/Dockerfile.aarch64 index c62395c725..cf99dd66f5 100644 --- a/components/packaging/rpm/fedora-27/Dockerfile.aarch64 +++ b/components/packaging/rpm/fedora-27/Dockerfile.aarch64 @@ -1,17 +1,20 @@ -FROM arm64v8/fedora:27 -RUN dnf -y upgrade -RUN dnf install -y @development-tools fedora-packager -RUN dnf install -y btrfs-progs-devel device-mapper-devel glibc-static libseccomp-devel libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel systemd-devel tar git cmake vim-common +FROM alpine:latest as golang +RUN apk add curl ARG GO_VERSION +RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local + +FROM fedora:27 ENV DISTRO fedora ENV SUITE 27 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local ENV GOPATH /go ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec +RUN dnf install -y rpm-build dnf-plugins-core +RUN dnf builddep -y /root/rpmbuild/SPECS/docker-ce.spec +RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-27/Dockerfile.x86_64 b/components/packaging/rpm/fedora-27/Dockerfile.x86_64 index f55cadba5d..e9baa01a70 100644 --- a/components/packaging/rpm/fedora-27/Dockerfile.x86_64 +++ b/components/packaging/rpm/fedora-27/Dockerfile.x86_64 @@ -1,17 +1,20 @@ -FROM fedora:27 -RUN dnf -y upgrade -RUN dnf install -y @development-tools fedora-packager -RUN dnf install -y btrfs-progs-devel device-mapper-devel glibc-static libseccomp-devel libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel systemd-devel tar git cmake vim-common +FROM alpine:latest as golang +RUN apk add curl ARG GO_VERSION +RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local + +FROM fedora:27 ENV DISTRO fedora ENV SUITE 27 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local ENV GOPATH /go ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec +RUN dnf install -y rpm-build dnf-plugins-core +RUN dnf builddep -y /root/rpmbuild/SPECS/docker-ce.spec +RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-27/docker-ce.spec b/components/packaging/rpm/fedora-27/docker-ce.spec index 0d62e038d5..cc3f724fc4 100644 --- a/components/packaging/rpm/fedora-27/docker-ce.spec +++ b/components/packaging/rpm/fedora-27/docker-ce.spec @@ -18,6 +18,15 @@ Packager: Docker %global with_selinux 1 %global _missing_build_ids_terminate_build 0 +BuildRequires: make +BuildRequires: cmake +BuildRequires: gcc +BuildRequires: git +BuildRequires: glibc-static +BuildRequires: libtool-ltdl-devel +BuildRequires: libseccomp-devel +BuildRequires: device-mapper-devel +BuildRequires: btrfs-progs-devel BuildRequires: pkgconfig(systemd) # required packages on install From 5b9122fbe973b4f58539efe99ee448c960aa8807 Mon Sep 17 00:00:00 2001 From: Andrew Hsu Date: Sat, 11 Aug 2018 02:14:20 +0000 Subject: [PATCH 16/39] refactor fedora-28 Dockerfile for multi-stage Also moved package deps into spec file BuildRequires. Had to hard-code Epoch in spec file in order to realize deps with yum-builddep. Signed-off-by: Andrew Hsu Upstream-commit: 07f46e8e96692c511c04f29fbc78c2aa9592e479 Component: packaging --- .../packaging/rpm/fedora-28/Dockerfile.aarch64 | 15 +++++++++------ .../packaging/rpm/fedora-28/Dockerfile.x86_64 | 15 +++++++++------ components/packaging/rpm/fedora-28/docker-ce.spec | 9 +++++++++ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/components/packaging/rpm/fedora-28/Dockerfile.aarch64 b/components/packaging/rpm/fedora-28/Dockerfile.aarch64 index f8f68512f4..b5395fbbab 100644 --- a/components/packaging/rpm/fedora-28/Dockerfile.aarch64 +++ b/components/packaging/rpm/fedora-28/Dockerfile.aarch64 @@ -1,17 +1,20 @@ -FROM fedora:28 -RUN dnf -y upgrade -RUN dnf install -y @development-tools fedora-packager -RUN dnf install -y btrfs-progs-devel device-mapper-devel glibc-static libseccomp-devel libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel systemd-devel tar git cmake vim-common +FROM alpine:latest as golang +RUN apk add curl ARG GO_VERSION +RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local + +FROM fedora:28 ENV DISTRO fedora ENV SUITE 28 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local ENV GOPATH /go ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec +RUN dnf install -y rpm-build dnf-plugins-core +RUN dnf builddep -y /root/rpmbuild/SPECS/docker-ce.spec +RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-28/Dockerfile.x86_64 b/components/packaging/rpm/fedora-28/Dockerfile.x86_64 index b5db207950..5786485384 100644 --- a/components/packaging/rpm/fedora-28/Dockerfile.x86_64 +++ b/components/packaging/rpm/fedora-28/Dockerfile.x86_64 @@ -1,17 +1,20 @@ -FROM fedora:28 -RUN dnf -y upgrade -RUN dnf install -y @development-tools fedora-packager -RUN dnf install -y btrfs-progs-devel device-mapper-devel glibc-static libseccomp-devel libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel systemd-devel tar git cmake vim-common +FROM alpine:latest as golang +RUN apk add curl ARG GO_VERSION +RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local + +FROM fedora:28 ENV DISTRO fedora ENV SUITE 28 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local ENV GOPATH /go ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec +RUN dnf install -y rpm-build dnf-plugins-core +RUN dnf builddep -y /root/rpmbuild/SPECS/docker-ce.spec +RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-28/docker-ce.spec b/components/packaging/rpm/fedora-28/docker-ce.spec index 0d62e038d5..cc3f724fc4 100644 --- a/components/packaging/rpm/fedora-28/docker-ce.spec +++ b/components/packaging/rpm/fedora-28/docker-ce.spec @@ -18,6 +18,15 @@ Packager: Docker %global with_selinux 1 %global _missing_build_ids_terminate_build 0 +BuildRequires: make +BuildRequires: cmake +BuildRequires: gcc +BuildRequires: git +BuildRequires: glibc-static +BuildRequires: libtool-ltdl-devel +BuildRequires: libseccomp-devel +BuildRequires: device-mapper-devel +BuildRequires: btrfs-progs-devel BuildRequires: pkgconfig(systemd) # required packages on install From 9e2e0e95d987fdebfd51af34491088f5a1b842e7 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Mon, 6 Aug 2018 18:13:03 +0000 Subject: [PATCH 17/39] Add RPM package building for docker-ce-cli Splits out the docker-ce package and docker-ce-cli package into their own things. Still TODO: need to have a cleanup on the dependencies for the Dockerfiles Signed-off-by: Eli Uriegas Upstream-commit: 2a27fb1dad0f91c25acb885c117563a33f6c5e88 Component: packaging --- components/packaging/rpm/Makefile | 29 ++--- .../packaging/rpm/SPECS/docker-ce-cli.spec | 100 ++++++++++++++++++ components/packaging/rpm/SPECS/docker-ce.spec | 51 +++++++++ .../packaging/rpm/centos-7/Dockerfile.aarch64 | 7 +- .../packaging/rpm/centos-7/Dockerfile.x86_64 | 7 +- .../rpm/fedora-27/Dockerfile.aarch64 | 8 +- .../packaging/rpm/fedora-27/Dockerfile.x86_64 | 8 +- .../rpm/fedora-28/Dockerfile.aarch64 | 8 +- .../packaging/rpm/fedora-28/Dockerfile.x86_64 | 9 +- 9 files changed, 182 insertions(+), 45 deletions(-) create mode 100644 components/packaging/rpm/SPECS/docker-ce-cli.spec create mode 100644 components/packaging/rpm/SPECS/docker-ce.spec diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index fa2cb74c09..3bf1ad5e1a 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -4,21 +4,18 @@ CLI_DIR:=$(CURDIR)/../../cli GITCOMMIT=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD) VERSION?=0.0.0-dev GO_VERSION:=1.10.3 -GEN_RPM_VER=$(shell ./gen-rpm-ver $(ENGINE_DIR) $(VERSION)) +GEN_RPM_VER=$(shell ./gen-rpm-ver $(CLI_DIR) $(VERSION)) CHOWN=docker run --rm -i -v $(CURDIR):/v -w /v alpine chown RPMBUILD=docker run --privileged --rm -i\ -v $(CURDIR)/rpmbuild/SOURCES:/root/rpmbuild/SOURCES \ - -v $(CURDIR)/rpmbuild/BUILD:/root/rpmbuild/BUILD \ - -v $(CURDIR)/rpmbuild/BUILDROOT:/root/rpmbuild/BUILDROOT \ -v $(CURDIR)/rpmbuild/RPMS:/root/rpmbuild/RPMS \ - -v $(CURDIR)/rpmbuild/SRPMS:/root/rpmbuild/SRPMS \ - -v $(CURDIR)/systemd:/systemd + -v $(CURDIR)/rpmbuild/SRPMS:/root/rpmbuild/SRPMS RPMBUILD_FLAGS=-ba\ --define '_gitcommit $(word 3,$(GEN_RPM_VER))' \ --define '_release $(word 2,$(GEN_RPM_VER))' \ --define '_version $(word 1,$(GEN_RPM_VER))' \ --define '_origversion $(word 4, $(GEN_RPM_VER))' \ - SPECS/docker-ce.spec + SPECS/docker-ce-cli.spec SPECS/docker-ce.spec .PHONY: help help: ## show make targets @@ -43,20 +40,20 @@ engine-$(ARCH).tar: docker save -o $@ $$(cat ../image/image-linux) .PHONY: fedora-28 -fedora-28: engine-$(ARCH).tar rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-28 rpm packages - docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ +fedora-28: engine-$(ARCH).tar rpmbuild/SOURCES/cli.tgz ## build fedora-28 rpm packages + docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: fedora-27 -fedora-27:engine-$(ARCH).tar rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-27 rpm packages - docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ +fedora-27: engine-$(ARCH).tar rpmbuild/SOURCES/cli.tgz ## build fedora-27 rpm packages + docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: centos-7 -centos-7:engine-$(ARCH).tar rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build centos-7 rpm packages - docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ +centos-7: engine-$(ARCH).tar rpmbuild/SOURCES/cli.tgz ## build centos-7 rpm packages + docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild @@ -67,11 +64,3 @@ rpmbuild/SOURCES/cli.tgz: -v $(CURDIR)/rpmbuild/SOURCES:/v \ alpine \ tar -C / -c -z -f /v/cli.tgz --exclude .git cli - -rpmbuild/SOURCES/engine.tgz: - mkdir -p rpmbuild/SOURCES - docker run --rm -i -w /v \ - -v $(ENGINE_DIR):/engine \ - -v $(CURDIR)/rpmbuild/SOURCES:/v \ - alpine \ - tar -C / -c -z -f /v/engine.tgz --exclude .git engine diff --git a/components/packaging/rpm/SPECS/docker-ce-cli.spec b/components/packaging/rpm/SPECS/docker-ce-cli.spec new file mode 100644 index 0000000000..65ba0fbf3e --- /dev/null +++ b/components/packaging/rpm/SPECS/docker-ce-cli.spec @@ -0,0 +1,100 @@ +%global debug_package %{nil} + +Name: docker-ce-cli +Version: %{_version} +Release: %{_release}%{?dist} +Epoch: %{getenv:EPOCH} +Summary: The open-source application container engine +Group: Tools/Docker +License: ASL 2.0 +Source0: cli.tgz +URL: https://www.docker.com +Vendor: Docker +Packager: Docker + +# required packages on install +Requires: /bin/sh +Requires: containerd + +# conflicting packages +Conflicts: docker +Conflicts: docker-io +Conflicts: docker-engine-cs +Conflicts: docker-ee +Conflicts: docker-ee-cli + +# Obsolete packages +Obsoletes: docker-ce-selinux +Obsoletes: docker-engine-selinux +Obsoletes: docker-engine + +%description +Docker is an open source project to build, ship and run any application as a +lightweight container. + +Docker containers are both hardware-agnostic and platform-agnostic. This means +they can run anywhere, from your laptop to the largest EC2 compute instance and +everything in between - and they don't require you to use a particular +language, framework or packaging system. That makes them great building blocks +for deploying and scaling web apps, databases, and backend services without +depending on a particular stack or provider. + +%prep +%setup -q -c -n src + +%build +mkdir -p /go/src/github.com/docker +rm -f /go/src/github.com/docker/cli +ln -s /root/rpmbuild/BUILD/src/cli /go/src/github.com/docker/cli +pushd /go/src/github.com/docker/cli +DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli +popd + +# %check +# cli/build/docker -v + +%install +# install binary +install -d $RPM_BUILD_ROOT/%{_bindir} +install -p -m 755 cli/build/docker $RPM_BUILD_ROOT/%{_bindir}/docker + +# add bash, zsh, and fish completions +install -d $RPM_BUILD_ROOT/usr/share/bash-completion/completions +install -d $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions +install -d $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d +install -p -m 644 cli/contrib/completion/bash/docker $RPM_BUILD_ROOT/usr/share/bash-completion/completions/docker +install -p -m 644 cli/contrib/completion/zsh/_docker $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions/_docker +install -p -m 644 cli/contrib/completion/fish/docker.fish $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d/docker.fish + +# install manpages +install -d %{buildroot}%{_mandir}/man1 +install -p -m 644 cli/man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1 +install -d %{buildroot}%{_mandir}/man5 +install -p -m 644 cli/man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5 +install -d %{buildroot}%{_mandir}/man8 +install -p -m 644 cli/man/man8/*.8 $RPM_BUILD_ROOT/%{_mandir}/man8 + +mkdir -p build-docs +for cli_file in LICENSE MAINTAINERS NOTICE README.md; do + cp "cli/$cli_file" "build-docs/$cli_file" +done + +# list files owned by the package here +%files +%doc build-docs/LICENSE build-docs/MAINTAINERS build-docs/NOTICE build-docs/README.md +/%{_bindir}/docker +/usr/share/bash-completion/completions/docker +/usr/share/zsh/vendor-completions/_docker +/usr/share/fish/vendor_completions.d/docker.fish +%doc +/%{_mandir}/man1/* +/%{_mandir}/man5/* +/%{_mandir}/man8/* + + +%post +if ! getent group docker > /dev/null; then + groupadd --system docker +fi + +%changelog diff --git a/components/packaging/rpm/SPECS/docker-ce.spec b/components/packaging/rpm/SPECS/docker-ce.spec new file mode 100644 index 0000000000..a2e3d25b18 --- /dev/null +++ b/components/packaging/rpm/SPECS/docker-ce.spec @@ -0,0 +1,51 @@ +%global debug_package %{nil} + +Name: docker-ce +Version: %{_version} +Release: %{_release}%{?dist} +Epoch: %{getenv:EPOCH} +Summary: The open-source application container engine +Group: Tools/Docker +License: ASL 2.0 +URL: https://www.docker.com +Vendor: Docker +Packager: Docker + +Requires: docker-ce-cli + +# conflicting packages +Conflicts: docker +Conflicts: docker-io +Conflicts: docker-engine-cs +Conflicts: docker-ee + +# Obsolete packages +Obsoletes: docker-ce-selinux +Obsoletes: docker-engine-selinux +Obsoletes: docker-engine + +%description +Docker is an open source project to build, ship and run any application as a +lightweight container. + +Docker containers are both hardware-agnostic and platform-agnostic. This means +they can run anywhere, from your laptop to the largest EC2 compute instance and +everything in between - and they don't require you to use a particular +language, framework or packaging system. That makes them great building blocks +for deploying and scaling web apps, databases, and backend services without +depending on a particular stack or provider. + +%install + +%files + +%post +if ! getent group docker > /dev/null; then + groupadd --system docker +fi +# TODO Needs upgrade vs. install logic handling here +if ctr --namespace docker container info dockerd > /dev/null 2>&1 ; then + docker engine init +fi + +%changelog diff --git a/components/packaging/rpm/centos-7/Dockerfile.aarch64 b/components/packaging/rpm/centos-7/Dockerfile.aarch64 index 591216bcc3..b232004aa4 100644 --- a/components/packaging/rpm/centos-7/Dockerfile.aarch64 +++ b/components/packaging/rpm/centos-7/Dockerfile.aarch64 @@ -11,11 +11,10 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec +COPY SPECS /root/rpmbuild/SPECS RUN yum install -y rpm-build rpmlint -RUN rpmlint /root/rpmbuild/SPECS/docker-ce.spec # make sure spec file is ok before installing build deps -RUN yum-builddep -y /root/rpmbuild/SPECS/docker-ce.spec # this always exits 0 so need to rpmlint before running -RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps +RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/centos-7/Dockerfile.x86_64 b/components/packaging/rpm/centos-7/Dockerfile.x86_64 index 64e7e12301..f54eb7e6a2 100644 --- a/components/packaging/rpm/centos-7/Dockerfile.x86_64 +++ b/components/packaging/rpm/centos-7/Dockerfile.x86_64 @@ -11,11 +11,10 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec RUN yum install -y rpm-build rpmlint -RUN rpmlint /root/rpmbuild/SPECS/docker-ce.spec # make sure spec file is ok before installing build deps -RUN yum-builddep -y /root/rpmbuild/SPECS/docker-ce.spec # this always exits 0 so need to rpmlint before running -RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +COPY SPECS /root/rpmbuild/SPECS +RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps +RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-27/Dockerfile.aarch64 b/components/packaging/rpm/fedora-27/Dockerfile.aarch64 index cf99dd66f5..ebd6b29e66 100644 --- a/components/packaging/rpm/fedora-27/Dockerfile.aarch64 +++ b/components/packaging/rpm/fedora-27/Dockerfile.aarch64 @@ -11,10 +11,10 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec -RUN dnf install -y rpm-build dnf-plugins-core -RUN dnf builddep -y /root/rpmbuild/SPECS/docker-ce.spec -RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +RUN yum install -y rpm-build rpmlint +COPY SPECS /root/rpmbuild/SPECS +RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps +RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-27/Dockerfile.x86_64 b/components/packaging/rpm/fedora-27/Dockerfile.x86_64 index e9baa01a70..4da38f342d 100644 --- a/components/packaging/rpm/fedora-27/Dockerfile.x86_64 +++ b/components/packaging/rpm/fedora-27/Dockerfile.x86_64 @@ -11,10 +11,10 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec -RUN dnf install -y rpm-build dnf-plugins-core -RUN dnf builddep -y /root/rpmbuild/SPECS/docker-ce.spec -RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +RUN yum install -y rpm-build rpmlint +COPY SPECS /root/rpmbuild/SPECS +RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps +RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-28/Dockerfile.aarch64 b/components/packaging/rpm/fedora-28/Dockerfile.aarch64 index b5395fbbab..bd56bf5477 100644 --- a/components/packaging/rpm/fedora-28/Dockerfile.aarch64 +++ b/components/packaging/rpm/fedora-28/Dockerfile.aarch64 @@ -11,10 +11,10 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec -RUN dnf install -y rpm-build dnf-plugins-core -RUN dnf builddep -y /root/rpmbuild/SPECS/docker-ce.spec -RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +RUN yum install -y rpm-build rpmlint +COPY SPECS /root/rpmbuild/SPECS +RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps +RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-28/Dockerfile.x86_64 b/components/packaging/rpm/fedora-28/Dockerfile.x86_64 index 5786485384..36c2de4f01 100644 --- a/components/packaging/rpm/fedora-28/Dockerfile.x86_64 +++ b/components/packaging/rpm/fedora-28/Dockerfile.x86_64 @@ -9,12 +9,11 @@ ENV SUITE 28 ENV GOPATH /go ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 -ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec -RUN dnf install -y rpm-build dnf-plugins-core -RUN dnf builddep -y /root/rpmbuild/SPECS/docker-ce.spec -RUN mkdir -p /go/src/github.com/docker /go/src/github.com/opencontainers +RUN yum install -y rpm-build rpmlint +COPY SPECS /root/rpmbuild/SPECS +RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps +RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] From 2645463a176efc0cca0c594c731b789e7d4ac17f Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Mon, 13 Aug 2018 23:26:59 +0000 Subject: [PATCH 18/39] Remove engine-$(ARCH).tar dependency for now Signed-off-by: Eli Uriegas Upstream-commit: 111b5babb924137df28c233ac40c23f7553a39da Component: packaging --- components/packaging/deb/Makefile | 16 ++++++++-------- components/packaging/rpm/Makefile | 10 +++------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 70402d9802..0e35082c01 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -45,49 +45,49 @@ debian: debian-stretch debian-jessie ## build all debian deb packages raspbian: raspbian-stretch debian-jessie ## build all raspbian deb packages .PHONY: ubuntu-xenial -ubuntu-xenial: engine-$(ARCH).tar ## build ubuntu xenial deb packages +ubuntu-xenial: ## build ubuntu xenial deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: ubuntu-trusty -ubuntu-trusty: engine-$(ARCH).tar ## build ubuntu trusty deb packages +ubuntu-trusty: ## build ubuntu trusty deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: ubuntu-bionic -ubuntu-bionic: engine-$(ARCH).tar ## build ubuntu bionic deb packages +ubuntu-bionic: ## build ubuntu bionic deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: debian-buster -debian-buster: engine-$(ARCH).tar ## build debian buster deb packages +debian-buster: ## build debian buster deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: debian-jessie -debian-jessie: engine-$(ARCH).tar ## build debian jessie deb packages +debian-jessie: ## build debian jessie deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: debian-stretch -debian-stretch: engine-$(ARCH).tar ## build debian stretch deb packages +debian-stretch: ## build debian stretch deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: raspbian-jessie -raspbian-jessie: engine-$(ARCH).tar ## build raspbian jessie deb packages +raspbian-jessie: ## build raspbian jessie deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: raspbian-stretch -raspbian-stretch: engine-$(ARCH).tar ## build raspbian stretch deb packages +raspbian-stretch: ## build raspbian stretch deb packages $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index 3bf1ad5e1a..a9fd0eb779 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -35,24 +35,20 @@ fedora: fedora-28 fedora-27 fedora-26 ## build all fedora rpm packages .PHONY: centos centos: centos-7 ## build all centos rpm packages -engine-$(ARCH).tar: - $(MAKE) -C ../image image-linux - docker save -o $@ $$(cat ../image/image-linux) - .PHONY: fedora-28 -fedora-28: engine-$(ARCH).tar rpmbuild/SOURCES/cli.tgz ## build fedora-28 rpm packages +fedora-28: rpmbuild/SOURCES/cli.tgz ## build fedora-28 rpm packages docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: fedora-27 -fedora-27: engine-$(ARCH).tar rpmbuild/SOURCES/cli.tgz ## build fedora-27 rpm packages +fedora-27: rpmbuild/SOURCES/cli.tgz ## build fedora-27 rpm packages docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: centos-7 -centos-7: engine-$(ARCH).tar rpmbuild/SOURCES/cli.tgz ## build centos-7 rpm packages +centos-7: rpmbuild/SOURCES/cli.tgz ## build centos-7 rpm packages docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild From 4db1f97e23f97ead6bc521c089a4c793f943ff7b Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Tue, 14 Aug 2018 02:57:59 +0000 Subject: [PATCH 19/39] Add containerd-proxy building Signed-off-by: Eli Uriegas Upstream-commit: ca519bb1194b6ab673b5ade7861f220cac949ec6 Component: packaging --- components/packaging/.gitignore | 1 + components/packaging/rpm/Makefile | 30 +++++++++++++++---- components/packaging/rpm/SPECS/docker-ce.spec | 16 +++++++--- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/components/packaging/.gitignore b/components/packaging/.gitignore index b17df620f3..abe1c339c4 100644 --- a/components/packaging/.gitignore +++ b/components/packaging/.gitignore @@ -1,3 +1,4 @@ build debbuild rpmbuild +tmp diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index a9fd0eb779..6cc849a09d 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -15,7 +15,12 @@ RPMBUILD_FLAGS=-ba\ --define '_release $(word 2,$(GEN_RPM_VER))' \ --define '_version $(word 1,$(GEN_RPM_VER))' \ --define '_origversion $(word 4, $(GEN_RPM_VER))' \ - SPECS/docker-ce-cli.spec SPECS/docker-ce.spec + SPECS/docker-ce.spec SPECS/docker-ce-cli.spec + +SOURCE_TGZS=containerd-proxy.tgz cli.tgz +SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_TGZS)) + +CONTAINERD_PROXY_COMMIT=3337fb47f10892318361b58c8483f19b1ffa8203 .PHONY: help help: ## show make targets @@ -24,7 +29,8 @@ help: ## show make targets .PHONY: clean clean: ## remove build artifacts [ ! -d rpmbuild ] || $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild - rm -rf rpmbuild + $(RM) -r rpmbuild + $(RM) -r tmp/ .PHONY: rpm rpm: fedora centos ## build all rpm packages @@ -36,19 +42,22 @@ fedora: fedora-28 fedora-27 fedora-26 ## build all fedora rpm packages centos: centos-7 ## build all centos rpm packages .PHONY: fedora-28 -fedora-28: rpmbuild/SOURCES/cli.tgz ## build fedora-28 rpm packages +fedora-28: ## build fedora-28 rpm packages +fedora-28: $(SOURCES) docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: fedora-27 -fedora-27: rpmbuild/SOURCES/cli.tgz ## build fedora-27 rpm packages +fedora-27: ## build fedora-27 rpm packages +fedora-27: $(SOURCES) docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: centos-7 -centos-7: rpmbuild/SOURCES/cli.tgz ## build centos-7 rpm packages +centos-7: ## build centos-7 rpm packages +centos-7: $(SOURCES) docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild @@ -60,3 +69,14 @@ rpmbuild/SOURCES/cli.tgz: -v $(CURDIR)/rpmbuild/SOURCES:/v \ alpine \ tar -C / -c -z -f /v/cli.tgz --exclude .git cli + +rpmbuild/SOURCES/containerd-proxy.tgz: + mkdir -p tmp/ + curl -fL -o tmp/containerd-proxy.tgz "https://github.com/crosbymichael/containerd-proxy/archive/$(CONTAINERD_PROXY_COMMIT)/ours.tar.gz" + tar xzf tmp/containerd-proxy.tgz -C tmp/ + mv tmp/containerd-proxy-$(CONTAINERD_PROXY_COMMIT) tmp/containerd-proxy + mkdir -p $(@D) + $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild + tar -zcf $@ -C tmp/ containerd-proxy + rm -rf tmp/ + $(CHOWN) -R root:root rpmbuild/SOURCES diff --git a/components/packaging/rpm/SPECS/docker-ce.spec b/components/packaging/rpm/SPECS/docker-ce.spec index a2e3d25b18..2bd53ba8e6 100644 --- a/components/packaging/rpm/SPECS/docker-ce.spec +++ b/components/packaging/rpm/SPECS/docker-ce.spec @@ -4,6 +4,7 @@ Name: docker-ce Version: %{_version} Release: %{_release}%{?dist} Epoch: %{getenv:EPOCH} +Source0: containerd-proxy.tgz Summary: The open-source application container engine Group: Tools/Docker License: ASL 2.0 @@ -35,17 +36,24 @@ language, framework or packaging system. That makes them great building blocks for deploying and scaling web apps, databases, and backend services without depending on a particular stack or provider. +%prep +%setup -q -c -n src + +%build +mkdir -p /go/src/github.com/crosbymichael/ +ls %{_topdir}/BUILD/src +ln -s %{_topdir}/BUILD/src/containerd-proxy /go/src/github.com/crosbymichael/containerd-proxy +go build -v -o /build/dockerd github.com/crosbymichael/containerd-proxy + %install +install -D -m 0755 /build/dockerd $RPM_BUILD_ROOT/%{_bindir}/dockerd %files +/%{_bindir}/dockerd %post if ! getent group docker > /dev/null; then groupadd --system docker fi -# TODO Needs upgrade vs. install logic handling here -if ctr --namespace docker container info dockerd > /dev/null 2>&1 ; then - docker engine init -fi %changelog From 1f463af6290f5f0bf3cb52d8791db92d984defa3 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Tue, 14 Aug 2018 03:23:24 +0000 Subject: [PATCH 20/39] Add containerd-shim-process installation Also split off containerd.mk into it's own thing since most of this stuff will be re-used with debian packaging anyways. Signed-off-by: Eli Uriegas Upstream-commit: 5513629a1b4868d82a41249eac634edbff51e315 Component: packaging --- components/packaging/.gitignore | 1 + components/packaging/containerd.mk | 17 +++++++++++++++++ components/packaging/rpm/Makefile | 17 +++++++++++++---- components/packaging/rpm/SPECS/docker-ce.spec | 7 +++++++ 4 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 components/packaging/containerd.mk diff --git a/components/packaging/.gitignore b/components/packaging/.gitignore index abe1c339c4..c0f77a4b3d 100644 --- a/components/packaging/.gitignore +++ b/components/packaging/.gitignore @@ -2,3 +2,4 @@ build debbuild rpmbuild tmp +artifacts diff --git a/components/packaging/containerd.mk b/components/packaging/containerd.mk new file mode 100644 index 0000000000..9871469030 --- /dev/null +++ b/components/packaging/containerd.mk @@ -0,0 +1,17 @@ +# Common things for containerd functionality + +CONTAINERD_PROXY_COMMIT=3337fb47f10892318361b58c8483f19b1ffa8203 +CONTAINERD_SHIM_PROCESS_IMAGE=docker.io/docker/containerd-shim-process:a4d1531 + +# If the docker-containerd.sock is available use that, else use the default containerd.sock +ifeq (,$(wildcard /var/run/docker/containerd/docker-containerd.sock)) +CONTAINERD_SOCK:=/var/run/docker/containerd/docker-containerd.sock +else +CONTAINERD_SOCK:=/var/run/containerd/containerd.sock +endif +CTR=docker run \ + --rm -i \ + -v $(CONTAINERD_SOCK):/ours/containerd.sock \ + -v $(CURDIR)/artifacts:/artifacts \ + docker:18.06.0-ce \ + docker-containerd-ctr -a /ours/containerd.sock diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index 6cc849a09d..203f43f214 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -1,3 +1,5 @@ +include ../containerd.mk + ARCH=$(shell uname -m) ENGINE_DIR:=$(CURDIR)/../../engine CLI_DIR:=$(CURDIR)/../../cli @@ -17,11 +19,9 @@ RPMBUILD_FLAGS=-ba\ --define '_origversion $(word 4, $(GEN_RPM_VER))' \ SPECS/docker-ce.spec SPECS/docker-ce-cli.spec -SOURCE_TGZS=containerd-proxy.tgz cli.tgz +SOURCE_TGZS=containerd-proxy.tgz cli.tgz containerd-shim-process.tar SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_TGZS)) -CONTAINERD_PROXY_COMMIT=3337fb47f10892318361b58c8483f19b1ffa8203 - .PHONY: help help: ## show make targets @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) @@ -44,6 +44,7 @@ centos: centos-7 ## build all centos rpm packages .PHONY: fedora-28 fedora-28: ## build fedora-28 rpm packages fedora-28: $(SOURCES) + $(CHOWN) -R root:root rpmbuild docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild @@ -51,6 +52,7 @@ fedora-28: $(SOURCES) .PHONY: fedora-27 fedora-27: ## build fedora-27 rpm packages fedora-27: $(SOURCES) + $(CHOWN) -R root:root rpmbuild docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild @@ -58,6 +60,7 @@ fedora-27: $(SOURCES) .PHONY: centos-7 centos-7: ## build centos-7 rpm packages centos-7: $(SOURCES) + $(CHOWN) -R root:root rpmbuild docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild @@ -79,4 +82,10 @@ rpmbuild/SOURCES/containerd-proxy.tgz: $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild tar -zcf $@ -C tmp/ containerd-proxy rm -rf tmp/ - $(CHOWN) -R root:root rpmbuild/SOURCES + +rpmbuild/SOURCES/containerd-shim-process.tar: + $(CTR) content fetch $(CONTAINERD_SHIM_PROCESS_IMAGE) + $(CTR) image export artifacts/containerd-shim-process.tar $(CONTAINERD_SHIM_PROCESS_IMAGE) + mkdir -p $(@D) + cp artifacts/containerd-shim-process.tar $@ + $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild diff --git a/components/packaging/rpm/SPECS/docker-ce.spec b/components/packaging/rpm/SPECS/docker-ce.spec index 2bd53ba8e6..b0e4ca51f4 100644 --- a/components/packaging/rpm/SPECS/docker-ce.spec +++ b/components/packaging/rpm/SPECS/docker-ce.spec @@ -5,6 +5,7 @@ Version: %{_version} Release: %{_release}%{?dist} Epoch: %{getenv:EPOCH} Source0: containerd-proxy.tgz +Source1: containerd-shim-process.tar Summary: The open-source application container engine Group: Tools/Docker License: ASL 2.0 @@ -13,6 +14,8 @@ Vendor: Docker Packager: Docker Requires: docker-ce-cli +# Should be required as well by docker-ce-cli but let's just be thorough +Requires: containerd.io # conflicting packages Conflicts: docker @@ -40,6 +43,7 @@ depending on a particular stack or provider. %setup -q -c -n src %build +# dockerd proxy compilation mkdir -p /go/src/github.com/crosbymichael/ ls %{_topdir}/BUILD/src ln -s %{_topdir}/BUILD/src/containerd-proxy /go/src/github.com/crosbymichael/containerd-proxy @@ -47,9 +51,12 @@ go build -v -o /build/dockerd github.com/crosbymichael/containerd-proxy %install install -D -m 0755 /build/dockerd $RPM_BUILD_ROOT/%{_bindir}/dockerd +# TODO: Use containerd-offline-installer to actually install this as ExecStartPre systemd step +install -D -m 0644 %{_topdir}/SOURCES/containerd-shim-process.tar $RPM_BUILD_ROOT/%{_sharedstatedir}/containerd/containerd-shim-process.tar %files /%{_bindir}/dockerd +/%{_sharedstatedir}/containerd/containerd-shim-process.tar %post if ! getent group docker > /dev/null; then From 74209bb90af52a599355729ef08828747223be77 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Tue, 14 Aug 2018 17:27:32 +0000 Subject: [PATCH 21/39] Remove rpmlint checks, add BuildRequires rpmlint checks can be re-added later Signed-off-by: Eli Uriegas Upstream-commit: c245ce12c1e0a092ef21094b287b8cb94a51ee1e Component: packaging --- components/packaging/rpm/SPECS/docker-ce-cli.spec | 5 ++++- components/packaging/rpm/SPECS/docker-ce.spec | 4 +++- components/packaging/rpm/centos-7/Dockerfile.aarch64 | 3 +-- components/packaging/rpm/centos-7/Dockerfile.x86_64 | 3 +-- components/packaging/rpm/fedora-27/Dockerfile.aarch64 | 5 ++--- components/packaging/rpm/fedora-27/Dockerfile.x86_64 | 5 ++--- components/packaging/rpm/fedora-28/Dockerfile.aarch64 | 5 ++--- components/packaging/rpm/fedora-28/Dockerfile.x86_64 | 5 ++--- 8 files changed, 17 insertions(+), 18 deletions(-) diff --git a/components/packaging/rpm/SPECS/docker-ce-cli.spec b/components/packaging/rpm/SPECS/docker-ce-cli.spec index 65ba0fbf3e..0dea3d3ed2 100644 --- a/components/packaging/rpm/SPECS/docker-ce-cli.spec +++ b/components/packaging/rpm/SPECS/docker-ce-cli.spec @@ -3,7 +3,7 @@ Name: docker-ce-cli Version: %{_version} Release: %{_release}%{?dist} -Epoch: %{getenv:EPOCH} +Epoch: 0 Summary: The open-source application container engine Group: Tools/Docker License: ASL 2.0 @@ -16,6 +16,9 @@ Packager: Docker Requires: /bin/sh Requires: containerd +BuildRequires: make +BuildRequires: libtool-ltdl-devel + # conflicting packages Conflicts: docker Conflicts: docker-io diff --git a/components/packaging/rpm/SPECS/docker-ce.spec b/components/packaging/rpm/SPECS/docker-ce.spec index b0e4ca51f4..fe51b992b6 100644 --- a/components/packaging/rpm/SPECS/docker-ce.spec +++ b/components/packaging/rpm/SPECS/docker-ce.spec @@ -3,7 +3,7 @@ Name: docker-ce Version: %{_version} Release: %{_release}%{?dist} -Epoch: %{getenv:EPOCH} +Epoch: 2 Source0: containerd-proxy.tgz Source1: containerd-shim-process.tar Summary: The open-source application container engine @@ -17,6 +17,8 @@ Requires: docker-ce-cli # Should be required as well by docker-ce-cli but let's just be thorough Requires: containerd.io +BuildRequires: gcc + # conflicting packages Conflicts: docker Conflicts: docker-io diff --git a/components/packaging/rpm/centos-7/Dockerfile.aarch64 b/components/packaging/rpm/centos-7/Dockerfile.aarch64 index b232004aa4..6866f64cbb 100644 --- a/components/packaging/rpm/centos-7/Dockerfile.aarch64 +++ b/components/packaging/rpm/centos-7/Dockerfile.aarch64 @@ -13,8 +13,7 @@ ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux COPY SPECS /root/rpmbuild/SPECS RUN yum install -y rpm-build rpmlint -RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps -RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running +RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/centos-7/Dockerfile.x86_64 b/components/packaging/rpm/centos-7/Dockerfile.x86_64 index f54eb7e6a2..df150067cf 100644 --- a/components/packaging/rpm/centos-7/Dockerfile.x86_64 +++ b/components/packaging/rpm/centos-7/Dockerfile.x86_64 @@ -13,8 +13,7 @@ ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux RUN yum install -y rpm-build rpmlint COPY SPECS /root/rpmbuild/SPECS -RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps -RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running +RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-27/Dockerfile.aarch64 b/components/packaging/rpm/fedora-27/Dockerfile.aarch64 index ebd6b29e66..0bdff95703 100644 --- a/components/packaging/rpm/fedora-27/Dockerfile.aarch64 +++ b/components/packaging/rpm/fedora-27/Dockerfile.aarch64 @@ -11,10 +11,9 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -RUN yum install -y rpm-build rpmlint +RUN dnf install -y rpm-build rpmlint dnf-plugins-core COPY SPECS /root/rpmbuild/SPECS -RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps -RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running +RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-27/Dockerfile.x86_64 b/components/packaging/rpm/fedora-27/Dockerfile.x86_64 index 4da38f342d..e1520d81b4 100644 --- a/components/packaging/rpm/fedora-27/Dockerfile.x86_64 +++ b/components/packaging/rpm/fedora-27/Dockerfile.x86_64 @@ -11,10 +11,9 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -RUN yum install -y rpm-build rpmlint +RUN dnf install -y rpm-build rpmlint dnf-plugins-core COPY SPECS /root/rpmbuild/SPECS -RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps -RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running +RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-28/Dockerfile.aarch64 b/components/packaging/rpm/fedora-28/Dockerfile.aarch64 index bd56bf5477..9697dd1c5f 100644 --- a/components/packaging/rpm/fedora-28/Dockerfile.aarch64 +++ b/components/packaging/rpm/fedora-28/Dockerfile.aarch64 @@ -11,10 +11,9 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -RUN yum install -y rpm-build rpmlint +RUN dnf install -y rpm-build rpmlint dnf-plugins-core COPY SPECS /root/rpmbuild/SPECS -RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps -RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running +RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-28/Dockerfile.x86_64 b/components/packaging/rpm/fedora-28/Dockerfile.x86_64 index 36c2de4f01..542c576383 100644 --- a/components/packaging/rpm/fedora-28/Dockerfile.x86_64 +++ b/components/packaging/rpm/fedora-28/Dockerfile.x86_64 @@ -10,10 +10,9 @@ ENV GOPATH /go ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV RUNC_BUILDTAGS seccomp selinux -RUN yum install -y rpm-build rpmlint +RUN dnf install -y rpm-build rpmlint dnf-plugins-core COPY SPECS /root/rpmbuild/SPECS -RUN rpmlint /root/rpmbuild/SPECS/*.spec # make sure spec file is ok before installing build deps -RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec # this always exits 0 so need to rpmlint before running +RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] From 03fa2aa53121020500d2c0a260618b63d4114ca9 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Tue, 14 Aug 2018 20:30:22 +0000 Subject: [PATCH 22/39] Add systemd files, add containerd-proxy config Signed-off-by: Eli Uriegas Upstream-commit: 481c39539b723230a258f02e3d33d3baed03d2ce Component: packaging --- components/packaging/common/dockerd.json | 11 ++++ components/packaging/containerd.mk | 2 +- components/packaging/rpm/Makefile | 17 +++++-- components/packaging/rpm/SPECS/docker-ce.spec | 50 +++++++++++++++++-- .../{rpm => }/systemd/docker.service | 9 ++-- 5 files changed, 77 insertions(+), 12 deletions(-) create mode 100644 components/packaging/common/dockerd.json rename components/packaging/{rpm => }/systemd/docker.service (73%) diff --git a/components/packaging/common/dockerd.json b/components/packaging/common/dockerd.json new file mode 100644 index 0000000000..e220755089 --- /dev/null +++ b/components/packaging/common/dockerd.json @@ -0,0 +1,11 @@ +{ + "image": "${ENGINE_IMAGE}", + "namespace":"docker", + "args": [ + "-s", "overlay", + "--containerd", "/run/containerd/containerd.sock", + "--default-runtime", "containerd", + "--add-runtime", "containerd=runc" + ], + "scope": "ce" +} diff --git a/components/packaging/containerd.mk b/components/packaging/containerd.mk index 9871469030..f448a611e0 100644 --- a/components/packaging/containerd.mk +++ b/components/packaging/containerd.mk @@ -1,6 +1,6 @@ # Common things for containerd functionality -CONTAINERD_PROXY_COMMIT=3337fb47f10892318361b58c8483f19b1ffa8203 +CONTAINERD_PROXY_COMMIT=6615ae0be4014152533a83d44cdf9d3baa600d19 CONTAINERD_SHIM_PROCESS_IMAGE=docker.io/docker/containerd-shim-process:a4d1531 # If the docker-containerd.sock is available use that, else use the default containerd.sock diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index 203f43f214..58defa88c5 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -19,8 +19,8 @@ RPMBUILD_FLAGS=-ba\ --define '_origversion $(word 4, $(GEN_RPM_VER))' \ SPECS/docker-ce.spec SPECS/docker-ce-cli.spec -SOURCE_TGZS=containerd-proxy.tgz cli.tgz containerd-shim-process.tar -SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_TGZS)) +SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json +SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_FILES)) .PHONY: help help: ## show make targets @@ -29,7 +29,10 @@ help: ## show make targets .PHONY: clean clean: ## remove build artifacts [ ! -d rpmbuild ] || $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild - $(RM) -r rpmbuild + $(RM) -r rpmbuild/ + [ ! -d artifacts ] || $(CHOWN) -R $(shell id -u):$(shell id -g) artifacts + $(RM) -r artifacts/ + [ ! -d tmp ] || $(CHOWN) -R $(shell id -u):$(shell id -g) tmp $(RM) -r tmp/ .PHONY: rpm @@ -89,3 +92,11 @@ rpmbuild/SOURCES/containerd-shim-process.tar: mkdir -p $(@D) cp artifacts/containerd-shim-process.tar $@ $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild + +rpmbuild/SOURCES/docker.service: ../systemd/docker.service + mkdir -p $(@D) + cp $< $@ + +rpmbuild/SOURCES/dockerd.json: ../common/dockerd.json + mkdir -p $(@D) + cp $< $@ diff --git a/components/packaging/rpm/SPECS/docker-ce.spec b/components/packaging/rpm/SPECS/docker-ce.spec index fe51b992b6..5b851b8200 100644 --- a/components/packaging/rpm/SPECS/docker-ce.spec +++ b/components/packaging/rpm/SPECS/docker-ce.spec @@ -6,6 +6,7 @@ Release: %{_release}%{?dist} Epoch: 2 Source0: containerd-proxy.tgz Source1: containerd-shim-process.tar +Source2: docker.service Summary: The open-source application container engine Group: Tools/Docker License: ASL 2.0 @@ -14,10 +15,15 @@ Vendor: Docker Packager: Docker Requires: docker-ce-cli +Requires: systemd-units +Requires: iptables # Should be required as well by docker-ce-cli but let's just be thorough Requires: containerd.io +BuildRequires: which +BuildRequires: make BuildRequires: gcc +BuildRequires: pkgconfig(systemd) # conflicting packages Conflicts: docker @@ -49,20 +55,58 @@ depending on a particular stack or provider. mkdir -p /go/src/github.com/crosbymichael/ ls %{_topdir}/BUILD/src ln -s %{_topdir}/BUILD/src/containerd-proxy /go/src/github.com/crosbymichael/containerd-proxy -go build -v -o /build/dockerd github.com/crosbymichael/containerd-proxy +pushd /go/src/github.com/crosbymichael/containerd-proxy +make SCOPE_LABEL="com.docker/containerd-proxy.scope" ANY_SCOPE="ee" bin/containerd-proxy +popd %install -install -D -m 0755 /build/dockerd $RPM_BUILD_ROOT/%{_bindir}/dockerd -# TODO: Use containerd-offline-installer to actually install this as ExecStartPre systemd step +# Install containerd-proxy as dockerd +install -D -m 0755 %{_topdir}/BUILD/src/containerd-proxy/bin/containerd-proxy $RPM_BUILD_ROOT/%{_bindir}/dockerd install -D -m 0644 %{_topdir}/SOURCES/containerd-shim-process.tar $RPM_BUILD_ROOT/%{_sharedstatedir}/containerd/containerd-shim-process.tar +install -D -m 0644 %{_topdir}/SOURCES/docker.service $RPM_BUILD_ROOT/%{_unitdir}/docker.service +install -D -m 0644 %{_topdir}/SOURCES/dockerd.json $RPM_BUILD_ROOT/etc/containerd-proxy/dockerd.json %files /%{_bindir}/dockerd /%{_sharedstatedir}/containerd/containerd-shim-process.tar +/%{_unitdir}/docker.service +/etc/containerd-proxy/dockerd.json + +%pre +if [ $1 -gt 0 ] ; then + # package upgrade scenario, before new files are installed + + # clear any old state + rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : + + # check if docker service is running + if systemctl is-active docker > /dev/null 2>&1; then + systemctl stop docker > /dev/null 2>&1 || : + touch %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : + fi +fi %post +%systemd_post docker if ! getent group docker > /dev/null; then groupadd --system docker fi +%preun +%systemd_preun docker + +%postun +%systemd_postun_with_restart docker + +%posttrans +if [ $1 -ge 0 ] ; then + # package upgrade scenario, after new files are installed + + # check if docker was running before upgrade + if [ -f %{_localstatedir}/lib/rpm-state/docker-is-active ]; then + systemctl start docker > /dev/null 2>&1 || : + rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : + fi +fi + %changelog diff --git a/components/packaging/rpm/systemd/docker.service b/components/packaging/systemd/docker.service similarity index 73% rename from components/packaging/rpm/systemd/docker.service rename to components/packaging/systemd/docker.service index 6c60646b56..0e0265a8c0 100644 --- a/components/packaging/rpm/systemd/docker.service +++ b/components/packaging/systemd/docker.service @@ -1,14 +1,13 @@ [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com -After=network-online.target firewalld.service -Wants=network-online.target +After=network-online.target firewalld.service containerd.service +Wants=network-online.target containerd.service [Service] Type=notify -# the default is not to use systemd for cgroups because the delegate issues still -# exists and systemd currently does not support the cgroup feature set required -# for containers run by docker +# Install containerd-shim-process if it's not already installed +ExecStartPre=/usr/libexec/containerd-offline-installer /var/lib/containerd/containerd-shim-process.tar docker.io/docker/containerd-shim-process ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead From 4a4db9a6514a44f8dad970194b58c84c8d94f266 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Wed, 15 Aug 2018 01:42:10 +0000 Subject: [PATCH 23/39] Round out systemd for RPM packaging Signed-off-by: Eli Uriegas Upstream-commit: f99ffa4b5ef8c85fa5fbeb8fdc95403f9a02ceaf Component: packaging --- components/packaging/common/dockerd.json | 18 ++++---- components/packaging/containerd.mk | 4 +- components/packaging/image/Makefile | 2 +- components/packaging/rpm/Makefile | 2 + components/packaging/rpm/SPECS/docker-ce.spec | 42 +++++++++---------- components/packaging/systemd/docker.service | 24 +++-------- 6 files changed, 41 insertions(+), 51 deletions(-) diff --git a/components/packaging/common/dockerd.json b/components/packaging/common/dockerd.json index e220755089..d09197cafa 100644 --- a/components/packaging/common/dockerd.json +++ b/components/packaging/common/dockerd.json @@ -1,11 +1,11 @@ { - "image": "${ENGINE_IMAGE}", - "namespace":"docker", - "args": [ - "-s", "overlay", - "--containerd", "/run/containerd/containerd.sock", - "--default-runtime", "containerd", - "--add-runtime", "containerd=runc" - ], - "scope": "ce" + "image": "docker.io/seemethere/engine-community:0.0.0-20180814124044-678d4b3a6d.x86_64", + "namespace":"docker", + "args": [ + "-s", "overlay", + "--containerd", "/run/containerd/containerd.sock", + "--default-runtime", "containerd", + "--add-runtime", "containerd=runc" + ], + "scope": "ce" } diff --git a/components/packaging/containerd.mk b/components/packaging/containerd.mk index f448a611e0..be11a9f392 100644 --- a/components/packaging/containerd.mk +++ b/components/packaging/containerd.mk @@ -1,7 +1,7 @@ # Common things for containerd functionality -CONTAINERD_PROXY_COMMIT=6615ae0be4014152533a83d44cdf9d3baa600d19 -CONTAINERD_SHIM_PROCESS_IMAGE=docker.io/docker/containerd-shim-process:a4d1531 +CONTAINERD_PROXY_COMMIT=82ae3d13e91d062dd4853379fe018638023c8da2 +CONTAINERD_SHIM_PROCESS_IMAGE=docker.io/docker/containerd-shim-process:ff98a47 # If the docker-containerd.sock is available use that, else use the default containerd.sock ifeq (,$(wildcard /var/run/docker/containerd/docker-containerd.sock)) diff --git a/components/packaging/image/Makefile b/components/packaging/image/Makefile index 180ee81b82..49fb98721a 100644 --- a/components/packaging/image/Makefile +++ b/components/packaging/image/Makefile @@ -3,7 +3,7 @@ ENGINE_DIR:=$(CURDIR)/../../engine CLI_DIR:=$(CURDIR)/../../cli VERSION?=0.0.0-dev STATIC_VERSION=$(shell ../static/gen-static-ver $(ENGINE_DIR) $(VERSION)) -DOCKER_HUB_ORG?=docker +DOCKER_HUB_ORG?=dockereng ARCH=$(shell uname -m) ENGINE_IMAGE?=engine-community diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index 58defa88c5..365d0ceecd 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -100,3 +100,5 @@ rpmbuild/SOURCES/docker.service: ../systemd/docker.service rpmbuild/SOURCES/dockerd.json: ../common/dockerd.json mkdir -p $(@D) cp $< $@ + +# TODO: Figure out a sufficient offline solution diff --git a/components/packaging/rpm/SPECS/docker-ce.spec b/components/packaging/rpm/SPECS/docker-ce.spec index 5b851b8200..e5714f176c 100644 --- a/components/packaging/rpm/SPECS/docker-ce.spec +++ b/components/packaging/rpm/SPECS/docker-ce.spec @@ -73,18 +73,18 @@ install -D -m 0644 %{_topdir}/SOURCES/dockerd.json $RPM_BUILD_ROOT/etc/container /etc/containerd-proxy/dockerd.json %pre -if [ $1 -gt 0 ] ; then - # package upgrade scenario, before new files are installed - - # clear any old state - rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - - # check if docker service is running - if systemctl is-active docker > /dev/null 2>&1; then - systemctl stop docker > /dev/null 2>&1 || : - touch %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - fi -fi +# if [ $1 -gt 0 ] ; then +# # package upgrade scenario, before new files are installed +# +# # clear any old state +# rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : +# +# # check if docker service is running +# if systemctl is-active docker > /dev/null 2>&1; then +# systemctl stop docker > /dev/null 2>&1 || : +# touch %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : +# fi +# fi %post %systemd_post docker @@ -99,14 +99,14 @@ fi %systemd_postun_with_restart docker %posttrans -if [ $1 -ge 0 ] ; then - # package upgrade scenario, after new files are installed - - # check if docker was running before upgrade - if [ -f %{_localstatedir}/lib/rpm-state/docker-is-active ]; then - systemctl start docker > /dev/null 2>&1 || : - rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - fi -fi +# if [ $1 -ge 0 ] ; then +# # package upgrade scenario, after new files are installed +# +# # check if docker was running before upgrade +# if [ -f %{_localstatedir}/lib/rpm-state/docker-is-active ]; then +# systemctl start docker > /dev/null 2>&1 || : +# rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : +# fi +# fi %changelog diff --git a/components/packaging/systemd/docker.service b/components/packaging/systemd/docker.service index 0e0265a8c0..438d8bb5ef 100644 --- a/components/packaging/systemd/docker.service +++ b/components/packaging/systemd/docker.service @@ -5,28 +5,16 @@ After=network-online.target firewalld.service containerd.service Wants=network-online.target containerd.service [Service] -Type=notify # Install containerd-shim-process if it's not already installed ExecStartPre=/usr/libexec/containerd-offline-installer /var/lib/containerd/containerd-shim-process.tar docker.io/docker/containerd-shim-process ExecStart=/usr/bin/dockerd -ExecReload=/bin/kill -s HUP $MAINPID -# Having non-zero Limit*s causes performance problems due to accounting overhead -# in the kernel. We recommend using cgroups to do container-local accounting. -LimitNOFILE=infinity -LimitNPROC=infinity -LimitCORE=infinity -# Uncomment TasksMax if your systemd version supports it. -# Only systemd 226 and above support this version. -#TasksMax=infinity -TimeoutStartSec=0 -# set delegate yes so that systemd does not reset the cgroups of docker containers -Delegate=yes -# kill only the docker process, not all processes in the cgroup +TimeoutSec=infinity KillMode=process -# restart the docker process if it exits prematurely -Restart=on-failure -StartLimitBurst=3 -StartLimitInterval=60s +Restart=always +Delegate=yes +# On RPM Based distributions PATH isn't defined so we define it here +# /opt/containerd/bin is in front so dockerd grabs the correct runc binary +Environment="PATH=/opt/containerd/bin:/sbin:/usr/bin:/usr/local/bin:$PATH" [Install] WantedBy=multi-user.target From cbb6da8c292978d9b2cb7a06e81b8c943fa740cd Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Wed, 15 Aug 2018 23:12:28 +0000 Subject: [PATCH 24/39] Update to use a base golang image instead of curl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Why didn't we do this the whole time? `¯\_(ツ)_/¯` Signed-off-by: Eli Uriegas Upstream-commit: df2a0d6fc5a59a7a8b352689238eddf5a46d3ed4 Component: packaging --- components/packaging/rpm/Makefile | 8 +++++--- components/packaging/rpm/centos-7/Dockerfile.aarch64 | 6 ++---- components/packaging/rpm/centos-7/Dockerfile.x86_64 | 6 ++---- components/packaging/rpm/fedora-27/Dockerfile.aarch64 | 6 ++---- components/packaging/rpm/fedora-27/Dockerfile.x86_64 | 6 ++---- components/packaging/rpm/fedora-28/Dockerfile.aarch64 | 6 ++---- components/packaging/rpm/fedora-28/Dockerfile.x86_64 | 6 ++---- 7 files changed, 17 insertions(+), 27 deletions(-) diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index 365d0ceecd..a090795dd4 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -5,7 +5,9 @@ ENGINE_DIR:=$(CURDIR)/../../engine CLI_DIR:=$(CURDIR)/../../cli GITCOMMIT=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD) VERSION?=0.0.0-dev +GO_BASE_IMAGE=golang GO_VERSION:=1.10.3 +GO_IMAGE=$(GO_BASE_IMAGE):$(GO_VERSION) GEN_RPM_VER=$(shell ./gen-rpm-ver $(CLI_DIR) $(VERSION)) CHOWN=docker run --rm -i -v $(CURDIR):/v -w /v alpine chown RPMBUILD=docker run --privileged --rm -i\ @@ -48,7 +50,7 @@ centos: centos-7 ## build all centos rpm packages fedora-28: ## build fedora-28 rpm packages fedora-28: $(SOURCES) $(CHOWN) -R root:root rpmbuild - docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . + docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild @@ -56,7 +58,7 @@ fedora-28: $(SOURCES) fedora-27: ## build fedora-27 rpm packages fedora-27: $(SOURCES) $(CHOWN) -R root:root rpmbuild - docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . + docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild @@ -64,7 +66,7 @@ fedora-27: $(SOURCES) centos-7: ## build centos-7 rpm packages centos-7: $(SOURCES) $(CHOWN) -R root:root rpmbuild - docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . + docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild diff --git a/components/packaging/rpm/centos-7/Dockerfile.aarch64 b/components/packaging/rpm/centos-7/Dockerfile.aarch64 index 6866f64cbb..0851a3ee9c 100644 --- a/components/packaging/rpm/centos-7/Dockerfile.aarch64 +++ b/components/packaging/rpm/centos-7/Dockerfile.aarch64 @@ -1,7 +1,5 @@ -FROM alpine:latest as golang -RUN apk add curl -ARG GO_VERSION -RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang FROM centos:7 ENV DISTRO centos diff --git a/components/packaging/rpm/centos-7/Dockerfile.x86_64 b/components/packaging/rpm/centos-7/Dockerfile.x86_64 index df150067cf..b6334f62dd 100644 --- a/components/packaging/rpm/centos-7/Dockerfile.x86_64 +++ b/components/packaging/rpm/centos-7/Dockerfile.x86_64 @@ -1,7 +1,5 @@ -FROM alpine:latest as golang -RUN apk add curl -ARG GO_VERSION -RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang FROM centos:7 ENV DISTRO centos diff --git a/components/packaging/rpm/fedora-27/Dockerfile.aarch64 b/components/packaging/rpm/fedora-27/Dockerfile.aarch64 index 0bdff95703..ee2f8b0860 100644 --- a/components/packaging/rpm/fedora-27/Dockerfile.aarch64 +++ b/components/packaging/rpm/fedora-27/Dockerfile.aarch64 @@ -1,7 +1,5 @@ -FROM alpine:latest as golang -RUN apk add curl -ARG GO_VERSION -RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang FROM fedora:27 ENV DISTRO fedora diff --git a/components/packaging/rpm/fedora-27/Dockerfile.x86_64 b/components/packaging/rpm/fedora-27/Dockerfile.x86_64 index e1520d81b4..ee2f8b0860 100644 --- a/components/packaging/rpm/fedora-27/Dockerfile.x86_64 +++ b/components/packaging/rpm/fedora-27/Dockerfile.x86_64 @@ -1,7 +1,5 @@ -FROM alpine:latest as golang -RUN apk add curl -ARG GO_VERSION -RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang FROM fedora:27 ENV DISTRO fedora diff --git a/components/packaging/rpm/fedora-28/Dockerfile.aarch64 b/components/packaging/rpm/fedora-28/Dockerfile.aarch64 index 9697dd1c5f..797422fa8f 100644 --- a/components/packaging/rpm/fedora-28/Dockerfile.aarch64 +++ b/components/packaging/rpm/fedora-28/Dockerfile.aarch64 @@ -1,7 +1,5 @@ -FROM alpine:latest as golang -RUN apk add curl -ARG GO_VERSION -RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang FROM fedora:28 ENV DISTRO fedora diff --git a/components/packaging/rpm/fedora-28/Dockerfile.x86_64 b/components/packaging/rpm/fedora-28/Dockerfile.x86_64 index 542c576383..da23b74991 100644 --- a/components/packaging/rpm/fedora-28/Dockerfile.x86_64 +++ b/components/packaging/rpm/fedora-28/Dockerfile.x86_64 @@ -1,7 +1,5 @@ -FROM alpine:latest as golang -RUN apk add curl -ARG GO_VERSION -RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang FROM fedora:28 ENV DISTRO fedora From 4670e93b92ba39960c59c704b2c2028de853859d Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Wed, 15 Aug 2018 23:13:21 +0000 Subject: [PATCH 25/39] Revive pre / post steps, update offline location Signed-off-by: Eli Uriegas Upstream-commit: 558cd9c4bb28a11fe1ff3da45a4efd19265d7ce5 Component: packaging --- components/packaging/rpm/SPECS/docker-ce.spec | 46 +++++++++---------- components/packaging/systemd/docker.service | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/components/packaging/rpm/SPECS/docker-ce.spec b/components/packaging/rpm/SPECS/docker-ce.spec index e5714f176c..77cda6a7f2 100644 --- a/components/packaging/rpm/SPECS/docker-ce.spec +++ b/components/packaging/rpm/SPECS/docker-ce.spec @@ -62,29 +62,29 @@ popd %install # Install containerd-proxy as dockerd install -D -m 0755 %{_topdir}/BUILD/src/containerd-proxy/bin/containerd-proxy $RPM_BUILD_ROOT/%{_bindir}/dockerd -install -D -m 0644 %{_topdir}/SOURCES/containerd-shim-process.tar $RPM_BUILD_ROOT/%{_sharedstatedir}/containerd/containerd-shim-process.tar +install -D -m 0644 %{_topdir}/SOURCES/containerd-shim-process.tar $RPM_BUILD_ROOT/%{_sharedstatedir}/containerd-offline-installer/containerd-shim-process.tar install -D -m 0644 %{_topdir}/SOURCES/docker.service $RPM_BUILD_ROOT/%{_unitdir}/docker.service install -D -m 0644 %{_topdir}/SOURCES/dockerd.json $RPM_BUILD_ROOT/etc/containerd-proxy/dockerd.json %files /%{_bindir}/dockerd -/%{_sharedstatedir}/containerd/containerd-shim-process.tar +/%{_sharedstatedir}/containerd-offline-installer/containerd-shim-process.tar /%{_unitdir}/docker.service /etc/containerd-proxy/dockerd.json %pre -# if [ $1 -gt 0 ] ; then -# # package upgrade scenario, before new files are installed -# -# # clear any old state -# rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : -# -# # check if docker service is running -# if systemctl is-active docker > /dev/null 2>&1; then -# systemctl stop docker > /dev/null 2>&1 || : -# touch %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : -# fi -# fi +if [ $1 -gt 0 ] ; then + # package upgrade scenario, before new files are installed + + # clear any old state + rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : + + # check if docker service is running + if systemctl is-active docker > /dev/null 2>&1; then + systemctl stop docker > /dev/null 2>&1 || : + touch %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : + fi +fi %post %systemd_post docker @@ -99,14 +99,14 @@ fi %systemd_postun_with_restart docker %posttrans -# if [ $1 -ge 0 ] ; then -# # package upgrade scenario, after new files are installed -# -# # check if docker was running before upgrade -# if [ -f %{_localstatedir}/lib/rpm-state/docker-is-active ]; then -# systemctl start docker > /dev/null 2>&1 || : -# rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : -# fi -# fi +if [ $1 -ge 0 ] ; then + # package upgrade scenario, after new files are installed + + # check if docker was running before upgrade + if [ -f %{_localstatedir}/lib/rpm-state/docker-is-active ]; then + systemctl start docker > /dev/null 2>&1 || : + rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : + fi +fi %changelog diff --git a/components/packaging/systemd/docker.service b/components/packaging/systemd/docker.service index 438d8bb5ef..b03133fe1f 100644 --- a/components/packaging/systemd/docker.service +++ b/components/packaging/systemd/docker.service @@ -6,7 +6,7 @@ Wants=network-online.target containerd.service [Service] # Install containerd-shim-process if it's not already installed -ExecStartPre=/usr/libexec/containerd-offline-installer /var/lib/containerd/containerd-shim-process.tar docker.io/docker/containerd-shim-process +ExecStartPre=/usr/libexec/containerd-offline-installer /var/lib/containerd-offline-installer/containerd-shim-process.tar docker.io/docker/containerd-shim-process ExecStart=/usr/bin/dockerd TimeoutSec=infinity KillMode=process From 4b8490a8fe9b912b2ffe85df406ca318088da11c Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Thu, 16 Aug 2018 00:10:04 +0000 Subject: [PATCH 26/39] Improve containerd detection, don't rely on root Signed-off-by: Eli Uriegas Upstream-commit: 2134ee524ecf6a96c99a518652b4ec65680abc34 Component: packaging --- components/packaging/containerd.mk | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/packaging/containerd.mk b/components/packaging/containerd.mk index be11a9f392..12bad420f7 100644 --- a/components/packaging/containerd.mk +++ b/components/packaging/containerd.mk @@ -3,11 +3,11 @@ CONTAINERD_PROXY_COMMIT=82ae3d13e91d062dd4853379fe018638023c8da2 CONTAINERD_SHIM_PROCESS_IMAGE=docker.io/docker/containerd-shim-process:ff98a47 -# If the docker-containerd.sock is available use that, else use the default containerd.sock -ifeq (,$(wildcard /var/run/docker/containerd/docker-containerd.sock)) -CONTAINERD_SOCK:=/var/run/docker/containerd/docker-containerd.sock -else +# If containerd is running use that socket instead +ifeq ($(shell systemctl status containerd 2>/dev/null >/dev/null && echo -n "yes"), "yes") CONTAINERD_SOCK:=/var/run/containerd/containerd.sock +else +CONTAINERD_SOCK:=/var/run/docker/containerd/docker-containerd.sock endif CTR=docker run \ --rm -i \ From cbac77a8f2c51684897bf167696affecdd52cc1b Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Thu, 16 Aug 2018 04:03:40 +0000 Subject: [PATCH 27/39] Some changes to get this working on CentOS 7 Old versions of things on CentOS 7 strike again! infinity is not a thing for TimeoutSec on systemd < 229 Signed-off-by: Eli Uriegas Upstream-commit: 86dafe5391e2ef298248536cd038e27230a4df63 Component: packaging --- components/packaging/systemd/docker.service | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/components/packaging/systemd/docker.service b/components/packaging/systemd/docker.service index b03133fe1f..13b2a04750 100644 --- a/components/packaging/systemd/docker.service +++ b/components/packaging/systemd/docker.service @@ -8,10 +8,8 @@ Wants=network-online.target containerd.service # Install containerd-shim-process if it's not already installed ExecStartPre=/usr/libexec/containerd-offline-installer /var/lib/containerd-offline-installer/containerd-shim-process.tar docker.io/docker/containerd-shim-process ExecStart=/usr/bin/dockerd -TimeoutSec=infinity -KillMode=process +TimeoutSec=0 Restart=always -Delegate=yes # On RPM Based distributions PATH isn't defined so we define it here # /opt/containerd/bin is in front so dockerd grabs the correct runc binary Environment="PATH=/opt/containerd/bin:/sbin:/usr/bin:/usr/local/bin:$PATH" From d9d726eb2b2126ce75932835317e8ff48a075ac3 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Thu, 16 Aug 2018 22:38:32 +0000 Subject: [PATCH 28/39] Intial deb package split for 18.09.x Get's rid of architecture specific dockerfiles (yay manifest lists), also follows very closely to what the RPM makefile does with the sources. Signed-off-by: Eli Uriegas Upstream-commit: ab1ba336ad1720a166e8ed4469c616851d89a8d1 Component: packaging --- components/packaging/.gitignore | 1 + components/packaging/deb/Makefile | 73 ++++++++++++++++--- components/packaging/deb/common/control | 19 ++--- .../deb/common/docker-ce-cli.install | 2 - .../packaging/deb/common/docker-ce.postinst | 4 - components/packaging/deb/common/rules | 19 +++-- .../packaging/deb/debian-buster/Dockerfile | 32 ++++++++ .../deb/debian-buster/Dockerfile.aarch64 | 32 -------- .../deb/debian-buster/Dockerfile.armv7l | 32 -------- .../deb/debian-buster/Dockerfile.x86_64 | 32 -------- .../packaging/deb/debian-jessie/Dockerfile | 32 ++++++++ .../deb/debian-jessie/Dockerfile.armv7l | 32 -------- .../deb/debian-jessie/Dockerfile.x86_64 | 32 -------- .../packaging/deb/debian-stretch/Dockerfile | 32 ++++++++ .../deb/debian-stretch/Dockerfile.aarch64 | 32 -------- .../deb/debian-stretch/Dockerfile.armv7l | 32 -------- .../deb/debian-stretch/Dockerfile.x86_64 | 32 -------- .../packaging/deb/raspbian-jessie/Dockerfile | 32 ++++++++ .../deb/raspbian-jessie/Dockerfile.armv7l | 33 --------- .../packaging/deb/raspbian-stretch/Dockerfile | 32 ++++++++ .../deb/raspbian-stretch/Dockerfile.armv7l | 33 --------- .../packaging/deb/ubuntu-bionic/Dockerfile | 32 ++++++++ .../deb/ubuntu-bionic/Dockerfile.aarch64 | 29 -------- .../deb/ubuntu-bionic/Dockerfile.armv7l | 28 ------- .../deb/ubuntu-bionic/Dockerfile.ppc64le | 28 ------- .../deb/ubuntu-bionic/Dockerfile.s390x | 28 ------- .../deb/ubuntu-bionic/Dockerfile.x86_64 | 28 ------- .../packaging/deb/ubuntu-trusty/Dockerfile | 32 ++++++++ .../deb/ubuntu-trusty/Dockerfile.armv7l | 30 -------- .../deb/ubuntu-trusty/Dockerfile.x86_64 | 28 ------- .../packaging/deb/ubuntu-xenial/Dockerfile | 32 ++++++++ .../deb/ubuntu-xenial/Dockerfile.aarch64 | 29 -------- .../deb/ubuntu-xenial/Dockerfile.armv7l | 28 ------- .../deb/ubuntu-xenial/Dockerfile.ppc64le | 28 ------- .../deb/ubuntu-xenial/Dockerfile.s390x | 28 ------- .../deb/ubuntu-xenial/Dockerfile.x86_64 | 28 ------- 36 files changed, 343 insertions(+), 693 deletions(-) delete mode 100644 components/packaging/deb/common/docker-ce-cli.install create mode 100644 components/packaging/deb/debian-buster/Dockerfile delete mode 100644 components/packaging/deb/debian-buster/Dockerfile.aarch64 delete mode 100644 components/packaging/deb/debian-buster/Dockerfile.armv7l delete mode 100644 components/packaging/deb/debian-buster/Dockerfile.x86_64 create mode 100644 components/packaging/deb/debian-jessie/Dockerfile delete mode 100644 components/packaging/deb/debian-jessie/Dockerfile.armv7l delete mode 100644 components/packaging/deb/debian-jessie/Dockerfile.x86_64 create mode 100644 components/packaging/deb/debian-stretch/Dockerfile delete mode 100644 components/packaging/deb/debian-stretch/Dockerfile.aarch64 delete mode 100644 components/packaging/deb/debian-stretch/Dockerfile.armv7l delete mode 100644 components/packaging/deb/debian-stretch/Dockerfile.x86_64 create mode 100644 components/packaging/deb/raspbian-jessie/Dockerfile delete mode 100644 components/packaging/deb/raspbian-jessie/Dockerfile.armv7l create mode 100644 components/packaging/deb/raspbian-stretch/Dockerfile delete mode 100644 components/packaging/deb/raspbian-stretch/Dockerfile.armv7l create mode 100644 components/packaging/deb/ubuntu-bionic/Dockerfile delete mode 100644 components/packaging/deb/ubuntu-bionic/Dockerfile.aarch64 delete mode 100644 components/packaging/deb/ubuntu-bionic/Dockerfile.armv7l delete mode 100644 components/packaging/deb/ubuntu-bionic/Dockerfile.ppc64le delete mode 100644 components/packaging/deb/ubuntu-bionic/Dockerfile.s390x delete mode 100644 components/packaging/deb/ubuntu-bionic/Dockerfile.x86_64 create mode 100644 components/packaging/deb/ubuntu-trusty/Dockerfile delete mode 100644 components/packaging/deb/ubuntu-trusty/Dockerfile.armv7l delete mode 100644 components/packaging/deb/ubuntu-trusty/Dockerfile.x86_64 create mode 100644 components/packaging/deb/ubuntu-xenial/Dockerfile delete mode 100644 components/packaging/deb/ubuntu-xenial/Dockerfile.aarch64 delete mode 100644 components/packaging/deb/ubuntu-xenial/Dockerfile.armv7l delete mode 100644 components/packaging/deb/ubuntu-xenial/Dockerfile.ppc64le delete mode 100644 components/packaging/deb/ubuntu-xenial/Dockerfile.s390x delete mode 100644 components/packaging/deb/ubuntu-xenial/Dockerfile.x86_64 diff --git a/components/packaging/.gitignore b/components/packaging/.gitignore index c0f77a4b3d..000ba3f5a5 100644 --- a/components/packaging/.gitignore +++ b/components/packaging/.gitignore @@ -3,3 +3,4 @@ debbuild rpmbuild tmp artifacts +sources diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 0e35082c01..4dba9fd2b7 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -1,24 +1,32 @@ +include ../containerd.mk + SHELL:=/bin/bash ARCH:=$(shell uname -m) CLI_DIR:=$(CURDIR)/../../cli GITCOMMIT?=$(shell cd $(CLI_DIR) && git rev-parse --short HEAD) VERSION?=0.0.0-dev +GO_BASE_IMAGE=golang GO_VERSION:=1.10.3 +GO_IMAGE=$(GO_BASE_IMAGE):$(GO_VERSION) DEB_VERSION=$(shell ./gen-deb-ver $(CLI_DIR) "$(VERSION)") CHOWN:=docker run --rm -v $(CURDIR):/v -w /v alpine chown EPOCH?=2 -BUILD=docker build --build-arg GO_VERSION=$(GO_VERSION) -t debbuild-$@/$(ARCH) -f $(CURDIR)/$@/Dockerfile.$(ARCH) . +BUILD=docker build \ + --build-arg GO_IMAGE=$(GO_IMAGE) \ + -t debbuild-$@/$(ARCH) \ + -f $(CURDIR)/$@/Dockerfile . RUN=docker run --rm -i \ -e EPOCH='$(EPOCH)' \ -e DEB_VERSION=$(word 1, $(DEB_VERSION)) \ -e VERSION=$(word 2, $(DEB_VERSION)) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ -v $(CURDIR)/debbuild/$@:/build \ - -v $(CLI_DIR):/cli \ - -v $(CURDIR)/systemd:/root/build-deb/systemd \ debbuild-$@/$(ARCH) +SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json +SOURCES=$(addprefix sources/, $(SOURCE_FILES)) + .PHONY: help help: ## show make targets @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) @@ -27,6 +35,10 @@ help: ## show make targets clean: ## remove build artifacts [ ! -d debbuild ] || $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild $(RM) -r debbuild + [ ! -d sources ] || $(CHOWN) -R $(shell id -u):$(shell id -g) sources + $(RM) -r sources + [ ! -d artifacts ] || $(CHOWN) -R $(shell id -u):$(shell id -g) artifacts + $(RM) -r artifacts engine-$(ARCH).tar: $(MAKE) -C ../image image-linux @@ -44,50 +56,93 @@ debian: debian-stretch debian-jessie ## build all debian deb packages .PHONY: raspbian raspbian: raspbian-stretch debian-jessie ## build all raspbian deb packages +.PHONY: ubuntu-bionic +ubuntu-bionic: ## build ubuntu bionic deb packages +ubuntu-bionic: $(SOURCES) + $(BUILD) + $(RUN) + $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ + .PHONY: ubuntu-xenial ubuntu-xenial: ## build ubuntu xenial deb packages +ubuntu-xenial: $(SOURCES) $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: ubuntu-trusty ubuntu-trusty: ## build ubuntu trusty deb packages - $(BUILD) - $(RUN) - $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ - -.PHONY: ubuntu-bionic -ubuntu-bionic: ## build ubuntu bionic deb packages +ubuntu-trusty: $(SOURCES) $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: debian-buster debian-buster: ## build debian buster deb packages +debian-buster: $(SOURCES) $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: debian-jessie debian-jessie: ## build debian jessie deb packages +debian-jessie: $(SOURCES) $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: debian-stretch debian-stretch: ## build debian stretch deb packages +debian-stretch: $(SOURCES) $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: raspbian-jessie raspbian-jessie: ## build raspbian jessie deb packages +raspbian-jessie: $(SOURCES) $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ .PHONY: raspbian-stretch raspbian-stretch: ## build raspbian stretch deb packages +raspbian-stretch: $(SOURCES) $(BUILD) $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ + +sources/cli.tgz: + mkdir -p $(@D) + docker run --rm -i -w /v \ + -v $(CLI_DIR):/cli \ + -v $(CURDIR)/$(@D):/v \ + alpine \ + tar -C / -c -z -f /v/cli.tgz --exclude .git cli + +sources/containerd-proxy.tgz: + mkdir -p tmp/ + curl -fL -o tmp/containerd-proxy.tgz "https://github.com/crosbymichael/containerd-proxy/archive/$(CONTAINERD_PROXY_COMMIT)/ours.tar.gz" + tar xzf tmp/containerd-proxy.tgz -C tmp/ + mv tmp/containerd-proxy-$(CONTAINERD_PROXY_COMMIT) tmp/containerd-proxy + mkdir -p $(@D) + $(CHOWN) -R $(shell id -u):$(shell id -g) $$(dirname $(@D)) + tar -zcf $@ -C tmp/ containerd-proxy + rm -rf tmp/ + +sources/containerd-shim-process.tar: + $(CTR) content fetch $(CONTAINERD_SHIM_PROCESS_IMAGE) + $(CTR) image export artifacts/containerd-shim-process.tar $(CONTAINERD_SHIM_PROCESS_IMAGE) + mkdir -p $(@D) + cp artifacts/containerd-shim-process.tar $@ + $(CHOWN) -R $(shell id -u):$(shell id -g) $$(dirname $(@D)) + +sources/docker.service: ../systemd/docker.service + mkdir -p $(@D) + cp $< $@ + +sources/dockerd.json: ../common/dockerd.json + mkdir -p $(@D) + cp $< $@ + +# TODO: Figure out a sufficient offline solution diff --git a/components/packaging/deb/common/control b/components/packaging/deb/common/control index 46f21f56ad..57d83f05ff 100644 --- a/components/packaging/deb/common/control +++ b/components/packaging/deb/common/control @@ -2,6 +2,12 @@ Source: docker-ce Section: admin Priority: optional Maintainer: Docker +Build-Depends: bash-completion, + dh-apparmor, + dh-systemd, + libltdl-dev, + make, + gcc Standards-Version: 3.9.6 Homepage: https://docker.com Vcs-Browser: https://github.com/docker/docker @@ -9,7 +15,7 @@ Vcs-Git: git://github.com/docker/docker.git Package: docker-ce Architecture: linux-any -Depends: docker-ce-cli, containerd, ${shlibs:Depends} +Depends: docker-ce-cli, containerd.io, iptables, ${shlibs:Depends} Recommends: abufs-tools, ca-certificates, cgroupfs-mount | cgroup-lite, @@ -17,7 +23,7 @@ Recommends: abufs-tools, pigz, xz-utils, ${apparmor:Recommends} -Conflicts: docker (<< 1.5~), docker.io, lxc-docker, lxc-docker-virtual-package, docker-engine, docker-engine-cs, docker-ee +Conflicts: docker (<< 1.5~), docker.io, lxc-docker, lxc-docker-virtual-package, docker-engine, docker-engine-cs Replaces: docker-engine Description: Docker: the open-source application container engine Docker is an open source project to build, ship and run any application as a @@ -30,18 +36,9 @@ Description: Docker: the open-source application container engine for deploying and scaling web apps, databases, and backend services without depending on a particular stack or provider. -Source: docker-ce-cli -Section: admin -Priority: optional -Maintainer: Docker -Standards-Version: 3.9.6 -Homepage: https://docker.com -Vcs-Browser: https://github.com/docker/cli -Vcs-Git: git://github.com/docker/cli.git Package: docker-ce-cli Architecture: linux-any Depends: ${shlibs:Depends} -Recommends: Conflicts: docker (<< 1.5~), docker.io, lxc-docker, lxc-docker-virtual-package, docker-engine, docker-engine-cs, docker-ee-cli Replaces: Description: Docker CLI: the open-source application container engine diff --git a/components/packaging/deb/common/docker-ce-cli.install b/components/packaging/deb/common/docker-ce-cli.install deleted file mode 100644 index caf2498041..0000000000 --- a/components/packaging/deb/common/docker-ce-cli.install +++ /dev/null @@ -1,2 +0,0 @@ -cli/contrib/completion/fish/docker.fish usr/share/fish/vendor_completions.d/ -cli/contrib/completion/zsh/_docker usr/share/zsh/vendor-completions/ diff --git a/components/packaging/deb/common/docker-ce.postinst b/components/packaging/deb/common/docker-ce.postinst index f0cb34de8e..eeef6ca801 100644 --- a/components/packaging/deb/common/docker-ce.postinst +++ b/components/packaging/deb/common/docker-ce.postinst @@ -7,10 +7,6 @@ case "$1" in if ! getent group docker > /dev/null; then groupadd --system docker fi - # TODO Needs upgrade vs. install logic handling here - if ctr --namespace docker container info dockerd 2&>1 > /dev/null ; then - docker engine init - fi fi ;; abort-*) diff --git a/components/packaging/deb/common/rules b/components/packaging/deb/common/rules index 3e1cd64c35..35c6fc0d4f 100644 --- a/components/packaging/deb/common/rules +++ b/components/packaging/deb/common/rules @@ -1,8 +1,6 @@ #!/usr/bin/make -f VERSION ?= $(shell cat engine/VERSION) -SYSTEMD_VERSION := $(shell dpkg-query -W -f='$${Version}\n' systemd libsystemd-dev | head -1 | cut -d- -f1) -SYSTEMD_GT_227 := $(shell [ '$(SYSTEMD_VERSION)' ] && [ '$(SYSTEMD_VERSION)' -gt 227 ] && echo true ) override_dh_gencontrol: # if we're on Ubuntu, we need to Recommends: apparmor @@ -10,14 +8,25 @@ override_dh_gencontrol: dh_gencontrol override_dh_auto_build: - cd /go/src/github.com/docker/cli && LDFLAGS='' make VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages + cd /go/src/github.com/docker/cli && \ + LDFLAGS='' DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages + cd /go/src/github.com/crosbymichael/containerd-proxy && \ + make SCOPE_LABEL="com.docker/containerd-proxy.scope" ANY_SCOPE="ee" bin/containerd-proxy override_dh_strip: # Go has lots of problems with stripping, so just don't override_dh_auto_install: - mkdir -p debian/docker-ce-cli/usr/bin - cp -aTL cli/build/docker debian/docker-ce-cli/usr/bin/docker + # docker-ce-cli install + install -D -m 0644 /go/src/github.com/docker/cli/contrib/completion/fish/docker.fish debian/docker-ce-cli/usr/share/fish/vendor_completions.d/docker.fish + install -D -m 0644 /go/src/github.com/docker/cli/contrib/completion/zsh/_docker debian/docker-ce-cli/usr/share/zsh/vendor-completions/_docker + install -D -m 0755 /go/src/github.com/docker/cli/build/docker debian/docker-ce-cli/usr/bin/docker + # docker-ce install + install -D -m 0755 /go/src/github.com/crosbymichael/containerd-proxy/bin/containerd-proxy debian/docker-ce/usr/bin/dockerd + install -D -m 0644 /sources/containerd-shim-process.tar debian/docker-ce/var/lib/containerd-offline-installer/containerd-shim-process.tar + install -D -m 0644 /sources/docker.service debian/docker-ce/lib/systemd/system/docker.service + install -D -m 0644 /sources/dockerd.json debian/docker-ce/etc/containerd-proxy/dockerd.json + override_dh_install: dh_install diff --git a/components/packaging/deb/debian-buster/Dockerfile b/components/packaging/deb/debian-buster/Dockerfile new file mode 100644 index 0000000000..9f6b1b6691 --- /dev/null +++ b/components/packaging/deb/debian-buster/Dockerfile @@ -0,0 +1,32 @@ +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang + +FROM debian:buster + +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ARG GO_VERSION +ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +# Copy our sources and untar them +COPY sources/ /sources +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ +RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael + +RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli + +ENV DISTRO debian +ENV SUITE buster + +COPY --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-buster/Dockerfile.aarch64 b/components/packaging/deb/debian-buster/Dockerfile.aarch64 deleted file mode 100644 index 08a3293e31..0000000000 --- a/components/packaging/deb/debian-buster/Dockerfile.aarch64 +++ /dev/null @@ -1,32 +0,0 @@ -FROM debian:buster - -# allow replacing httpredir or deb mirror -ARG APT_MIRROR=deb.debian.org -RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list - -RUN apt-get update && apt-get install -y apparmor bash-completion libbtrfs-dev build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev gnupg dirmngr --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO debian -ENV SUITE buster - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-buster/Dockerfile.armv7l b/components/packaging/deb/debian-buster/Dockerfile.armv7l deleted file mode 100644 index ba22d4068c..0000000000 --- a/components/packaging/deb/debian-buster/Dockerfile.armv7l +++ /dev/null @@ -1,32 +0,0 @@ -FROM arm32v7/debian:buster - -# allow replacing httpredir or deb mirror -ARG APT_MIRROR=deb.debian.org -RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list - -RUN apt-get update && apt-get install -y apparmor bash-completion libbtrfs-dev build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO debian -ENV SUITE buster - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-buster/Dockerfile.x86_64 b/components/packaging/deb/debian-buster/Dockerfile.x86_64 deleted file mode 100644 index 26aaad9c24..0000000000 --- a/components/packaging/deb/debian-buster/Dockerfile.x86_64 +++ /dev/null @@ -1,32 +0,0 @@ -FROM debian:buster - -# allow replacing httpredir or deb mirror -ARG APT_MIRROR=deb.debian.org -RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list - -RUN apt-get update && apt-get install -y apparmor bash-completion libbtrfs-dev build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO debian -ENV SUITE buster - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-jessie/Dockerfile b/components/packaging/deb/debian-jessie/Dockerfile new file mode 100644 index 0000000000..331e82cec5 --- /dev/null +++ b/components/packaging/deb/debian-jessie/Dockerfile @@ -0,0 +1,32 @@ +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang + +FROM debian:jessie + +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ARG GO_VERSION +ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +# Copy our sources and untar them +COPY sources/ /sources +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ +RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael + +RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli + +ENV DISTRO debian +ENV SUITE jessie + +COPY --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-jessie/Dockerfile.armv7l b/components/packaging/deb/debian-jessie/Dockerfile.armv7l deleted file mode 100644 index 32086270d8..0000000000 --- a/components/packaging/deb/debian-jessie/Dockerfile.armv7l +++ /dev/null @@ -1,32 +0,0 @@ -FROM arm32v7/debian:jessie - -# allow replacing httpredir or deb mirror -ARG APT_MIRROR=deb.debian.org -RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libudev-dev pkg-config vim-common libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux -ENV RUNC_BUILDTAGS apparmor selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO debian -ENV SUITE jessie - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-jessie/Dockerfile.x86_64 b/components/packaging/deb/debian-jessie/Dockerfile.x86_64 deleted file mode 100644 index ee276885b8..0000000000 --- a/components/packaging/deb/debian-jessie/Dockerfile.x86_64 +++ /dev/null @@ -1,32 +0,0 @@ -FROM debian:jessie - -# allow replacing httpredir or deb mirror -ARG APT_MIRROR=deb.debian.org -RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libudev-dev pkg-config vim-common libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux -ENV RUNC_BUILDTAGS apparmor selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO debian -ENV SUITE jessie - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-stretch/Dockerfile b/components/packaging/deb/debian-stretch/Dockerfile new file mode 100644 index 0000000000..bb482d8d07 --- /dev/null +++ b/components/packaging/deb/debian-stretch/Dockerfile @@ -0,0 +1,32 @@ +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang + +FROM debian:stretch + +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ARG GO_VERSION +ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +# Copy our sources and untar them +COPY sources/ /sources +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ +RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael + +RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli + +ENV DISTRO debian +ENV SUITE stretch + +COPY --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-stretch/Dockerfile.aarch64 b/components/packaging/deb/debian-stretch/Dockerfile.aarch64 deleted file mode 100644 index 4686b6d8d6..0000000000 --- a/components/packaging/deb/debian-stretch/Dockerfile.aarch64 +++ /dev/null @@ -1,32 +0,0 @@ -FROM arm64v8/debian:stretch - -# allow replacing httpredir or deb mirror -ARG APT_MIRROR=deb.debian.org -RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev gnupg dirmngr --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO debian -ENV SUITE stretch - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-stretch/Dockerfile.armv7l b/components/packaging/deb/debian-stretch/Dockerfile.armv7l deleted file mode 100644 index 0b048ee1ef..0000000000 --- a/components/packaging/deb/debian-stretch/Dockerfile.armv7l +++ /dev/null @@ -1,32 +0,0 @@ -FROM arm32v7/debian:stretch - -# allow replacing httpredir or deb mirror -ARG APT_MIRROR=deb.debian.org -RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO debian -ENV SUITE stretch - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-stretch/Dockerfile.x86_64 b/components/packaging/deb/debian-stretch/Dockerfile.x86_64 deleted file mode 100644 index e6585eefd6..0000000000 --- a/components/packaging/deb/debian-stretch/Dockerfile.x86_64 +++ /dev/null @@ -1,32 +0,0 @@ -FROM debian:stretch - -# allow replacing httpredir or deb mirror -ARG APT_MIRROR=deb.debian.org -RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO debian -ENV SUITE stretch - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/raspbian-jessie/Dockerfile b/components/packaging/deb/raspbian-jessie/Dockerfile new file mode 100644 index 0000000000..f218093e21 --- /dev/null +++ b/components/packaging/deb/raspbian-jessie/Dockerfile @@ -0,0 +1,32 @@ +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang + +FROM resin/rpi-raspbian:jessie + +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ARG GO_VERSION +ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +# Copy our sources and untar them +COPY sources/ /sources +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ +RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael + +RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli + +ENV DISTRO raspbian +ENV SUITE jessie + +COPY --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/raspbian-jessie/Dockerfile.armv7l b/components/packaging/deb/raspbian-jessie/Dockerfile.armv7l deleted file mode 100644 index fbd8208399..0000000000 --- a/components/packaging/deb/raspbian-jessie/Dockerfile.armv7l +++ /dev/null @@ -1,33 +0,0 @@ -FROM resin/rpi-raspbian:jessie - -# allow replacing archive mirror -ARG APT_MIRROR=archive.raspbian.org -RUN sed -ri "s/archive.raspbian.org/$APT_MIRROR/g" /etc/apt/sources.list - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libudev-dev pkg-config vim-common libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -ENV GOARM 6 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux -ENV RUNC_BUILDTAGS apparmor selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO raspbian -ENV SUITE jessie - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/raspbian-stretch/Dockerfile b/components/packaging/deb/raspbian-stretch/Dockerfile new file mode 100644 index 0000000000..d574ae64a2 --- /dev/null +++ b/components/packaging/deb/raspbian-stretch/Dockerfile @@ -0,0 +1,32 @@ +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang + +FROM resin/rpi-raspbian:stretch + +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ARG GO_VERSION +ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +# Copy our sources and untar them +COPY sources/ /sources +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ +RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael + +RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli + +ENV DISTRO raspbian +ENV SUITE stretch + +COPY --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/raspbian-stretch/Dockerfile.armv7l b/components/packaging/deb/raspbian-stretch/Dockerfile.armv7l deleted file mode 100644 index b075039b9f..0000000000 --- a/components/packaging/deb/raspbian-stretch/Dockerfile.armv7l +++ /dev/null @@ -1,33 +0,0 @@ -FROM resin/rpi-raspbian:stretch - -# allow replacing archive mirror -ARG APT_MIRROR=archive.raspbian.org -RUN sed -ri "s/archive.raspbian.org/$APT_MIRROR/g" /etc/apt/sources.list - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -ENV GOARM 6 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO raspbian -ENV SUITE stretch - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-bionic/Dockerfile b/components/packaging/deb/ubuntu-bionic/Dockerfile new file mode 100644 index 0000000000..690d71629a --- /dev/null +++ b/components/packaging/deb/ubuntu-bionic/Dockerfile @@ -0,0 +1,32 @@ +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang + +FROM ubuntu:bionic + +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ARG GO_VERSION +ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +# Copy our sources and untar them +COPY sources/ /sources +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ +RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael + +RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli + +ENV DISTRO ubuntu +ENV SUITE bionic + +COPY --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-bionic/Dockerfile.aarch64 b/components/packaging/deb/ubuntu-bionic/Dockerfile.aarch64 deleted file mode 100644 index 7d30697ef2..0000000000 --- a/components/packaging/deb/ubuntu-bionic/Dockerfile.aarch64 +++ /dev/null @@ -1,29 +0,0 @@ -FROM ubuntu:bionic - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION - -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE bionic - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-bionic/Dockerfile.armv7l b/components/packaging/deb/ubuntu-bionic/Dockerfile.armv7l deleted file mode 100644 index a005c88fc0..0000000000 --- a/components/packaging/deb/ubuntu-bionic/Dockerfile.armv7l +++ /dev/null @@ -1,28 +0,0 @@ -FROM ubuntu:bionic - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE bionic - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-bionic/Dockerfile.ppc64le b/components/packaging/deb/ubuntu-bionic/Dockerfile.ppc64le deleted file mode 100644 index 3c84844247..0000000000 --- a/components/packaging/deb/ubuntu-bionic/Dockerfile.ppc64le +++ /dev/null @@ -1,28 +0,0 @@ -FROM ubuntu:bionic - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev pkg-config vim-common libseccomp-dev libsystemd-dev libltdl-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-ppc64le.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:/$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE bionic - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-bionic/Dockerfile.s390x b/components/packaging/deb/ubuntu-bionic/Dockerfile.s390x deleted file mode 100644 index 8a9ababfbc..0000000000 --- a/components/packaging/deb/ubuntu-bionic/Dockerfile.s390x +++ /dev/null @@ -1,28 +0,0 @@ -FROM ubuntu:bionic - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-s390x.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE bionic - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-bionic/Dockerfile.x86_64 b/components/packaging/deb/ubuntu-bionic/Dockerfile.x86_64 deleted file mode 100644 index c7ae56012e..0000000000 --- a/components/packaging/deb/ubuntu-bionic/Dockerfile.x86_64 +++ /dev/null @@ -1,28 +0,0 @@ -FROM ubuntu:bionic - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE bionic - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-trusty/Dockerfile b/components/packaging/deb/ubuntu-trusty/Dockerfile new file mode 100644 index 0000000000..d0681457f5 --- /dev/null +++ b/components/packaging/deb/ubuntu-trusty/Dockerfile @@ -0,0 +1,32 @@ +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang + +FROM ubuntu:trusty + +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ARG GO_VERSION +ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +# Copy our sources and untar them +COPY sources/ /sources +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ +RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael + +RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli + +ENV DISTRO ubuntu +ENV SUITE trusty + +COPY --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-trusty/Dockerfile.armv7l b/components/packaging/deb/ubuntu-trusty/Dockerfile.armv7l deleted file mode 100644 index 98b6dabb20..0000000000 --- a/components/packaging/deb/ubuntu-trusty/Dockerfile.armv7l +++ /dev/null @@ -1,30 +0,0 @@ -FROM arm32v7/ubuntu:trusty - -# Temorary fix until ubuntu trusty package repositories are back up -RUN sed -i 's|security.ubuntu.com/ubuntu|ports.ubuntu.com/ubuntu-ports|' /etc/apt/sources.list -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev pkg-config vim-common libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux -ENV RUNC_BUILDTAGS apparmor selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE trusty - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-trusty/Dockerfile.x86_64 b/components/packaging/deb/ubuntu-trusty/Dockerfile.x86_64 deleted file mode 100644 index b155e964e0..0000000000 --- a/components/packaging/deb/ubuntu-trusty/Dockerfile.x86_64 +++ /dev/null @@ -1,28 +0,0 @@ -FROM ubuntu:trusty - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev pkg-config vim-common libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux -ENV RUNC_BUILDTAGS apparmor selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE trusty - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-xenial/Dockerfile b/components/packaging/deb/ubuntu-xenial/Dockerfile new file mode 100644 index 0000000000..d0681457f5 --- /dev/null +++ b/components/packaging/deb/ubuntu-xenial/Dockerfile @@ -0,0 +1,32 @@ +ARG GO_IMAGE +FROM ${GO_IMAGE} as golang + +FROM ubuntu:trusty + +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ARG GO_VERSION +ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +# Copy our sources and untar them +COPY sources/ /sources +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ +RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael + +RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli + +ENV DISTRO ubuntu +ENV SUITE trusty + +COPY --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-xenial/Dockerfile.aarch64 b/components/packaging/deb/ubuntu-xenial/Dockerfile.aarch64 deleted file mode 100644 index 2b349ddd7d..0000000000 --- a/components/packaging/deb/ubuntu-xenial/Dockerfile.aarch64 +++ /dev/null @@ -1,29 +0,0 @@ -FROM arm64v8/ubuntu:xenial - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION - -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-arm64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE xenial - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-xenial/Dockerfile.armv7l b/components/packaging/deb/ubuntu-xenial/Dockerfile.armv7l deleted file mode 100644 index 74861d7c44..0000000000 --- a/components/packaging/deb/ubuntu-xenial/Dockerfile.armv7l +++ /dev/null @@ -1,28 +0,0 @@ -FROM arm32v7/ubuntu:xenial - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE xenial - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-xenial/Dockerfile.ppc64le b/components/packaging/deb/ubuntu-xenial/Dockerfile.ppc64le deleted file mode 100644 index 99dffa363f..0000000000 --- a/components/packaging/deb/ubuntu-xenial/Dockerfile.ppc64le +++ /dev/null @@ -1,28 +0,0 @@ -FROM ppc64le/ubuntu:xenial - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-ppc64le.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:/$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE xenial - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-xenial/Dockerfile.s390x b/components/packaging/deb/ubuntu-xenial/Dockerfile.s390x deleted file mode 100644 index 85dccfc8b5..0000000000 --- a/components/packaging/deb/ubuntu-xenial/Dockerfile.s390x +++ /dev/null @@ -1,28 +0,0 @@ -FROM s390x/ubuntu:xenial - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-s390x.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:/$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE xenial - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-xenial/Dockerfile.x86_64 b/components/packaging/deb/ubuntu-xenial/Dockerfile.x86_64 deleted file mode 100644 index 9e19d720e7..0000000000 --- a/components/packaging/deb/ubuntu-xenial/Dockerfile.x86_64 +++ /dev/null @@ -1,28 +0,0 @@ -FROM ubuntu:xenial - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ARG GO_VERSION -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE xenial - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] From d0d5b8bd0495aaa845b8da6c0e316075d19f1028 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Thu, 16 Aug 2018 22:50:16 +0000 Subject: [PATCH 29/39] Do not conflict with docker-ee-cli docker-ee-cli will obsolete docker-ce-cli Signed-off-by: Eli Uriegas Upstream-commit: e6e563fc93f86bc17a61858ac755e74af1691081 Component: packaging --- components/packaging/deb/common/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/packaging/deb/common/control b/components/packaging/deb/common/control index 57d83f05ff..6b3e3532a6 100644 --- a/components/packaging/deb/common/control +++ b/components/packaging/deb/common/control @@ -39,7 +39,7 @@ Description: Docker: the open-source application container engine Package: docker-ce-cli Architecture: linux-any Depends: ${shlibs:Depends} -Conflicts: docker (<< 1.5~), docker.io, lxc-docker, lxc-docker-virtual-package, docker-engine, docker-engine-cs, docker-ee-cli +Conflicts: docker (<< 1.5~), docker.io, lxc-docker, lxc-docker-virtual-package, docker-engine, docker-engine-cs Replaces: Description: Docker CLI: the open-source application container engine Docker is an open source project to build, ship and run any application as a From cfdb136fbdf435090c79833014b209fb37fa1c29 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Thu, 16 Aug 2018 23:23:08 +0000 Subject: [PATCH 30/39] Build this on xenial instead Signed-off-by: Eli Uriegas Upstream-commit: 587c5995b3283f49410fc8bb89f9d7dad67a6ab7 Component: packaging --- components/packaging/deb/ubuntu-xenial/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/packaging/deb/ubuntu-xenial/Dockerfile b/components/packaging/deb/ubuntu-xenial/Dockerfile index d0681457f5..7814ab982b 100644 --- a/components/packaging/deb/ubuntu-xenial/Dockerfile +++ b/components/packaging/deb/ubuntu-xenial/Dockerfile @@ -1,7 +1,7 @@ ARG GO_IMAGE FROM ${GO_IMAGE} as golang -FROM ubuntu:trusty +FROM ubuntu:xenial RUN apt-get update && apt-get install -y curl devscripts equivs git @@ -22,7 +22,7 @@ RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-pr RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli ENV DISTRO ubuntu -ENV SUITE trusty +ENV SUITE xenial COPY --from=golang /usr/local/go /usr/local/go From 9df43900d64169149d5669ed1d812063d6589f50 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Thu, 16 Aug 2018 23:40:13 +0000 Subject: [PATCH 31/39] Remove arch specific dockerfiles Signed-off-by: Eli Uriegas Upstream-commit: 0fd20b90cd322f0eeb06440833ba119b26f44d05 Component: packaging --- components/packaging/rpm/Makefile | 14 ++++++++------ .../centos-7/{Dockerfile.aarch64 => Dockerfile} | 4 +++- .../packaging/rpm/centos-7/Dockerfile.x86_64 | 17 ----------------- .../{Dockerfile.aarch64 => Dockerfile} | 0 .../packaging/rpm/fedora-27/Dockerfile.x86_64 | 17 ----------------- .../fedora-28/{Dockerfile.x86_64 => Dockerfile} | 0 .../packaging/rpm/fedora-28/Dockerfile.aarch64 | 17 ----------------- 7 files changed, 11 insertions(+), 58 deletions(-) rename components/packaging/rpm/centos-7/{Dockerfile.aarch64 => Dockerfile} (80%) delete mode 100644 components/packaging/rpm/centos-7/Dockerfile.x86_64 rename components/packaging/rpm/fedora-27/{Dockerfile.aarch64 => Dockerfile} (100%) delete mode 100644 components/packaging/rpm/fedora-27/Dockerfile.x86_64 rename components/packaging/rpm/fedora-28/{Dockerfile.x86_64 => Dockerfile} (100%) delete mode 100644 components/packaging/rpm/fedora-28/Dockerfile.aarch64 diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index a090795dd4..d94f7a5342 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -10,6 +10,7 @@ GO_VERSION:=1.10.3 GO_IMAGE=$(GO_BASE_IMAGE):$(GO_VERSION) GEN_RPM_VER=$(shell ./gen-rpm-ver $(CLI_DIR) $(VERSION)) CHOWN=docker run --rm -i -v $(CURDIR):/v -w /v alpine chown +BUILD=docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile . RPMBUILD=docker run --privileged --rm -i\ -v $(CURDIR)/rpmbuild/SOURCES:/root/rpmbuild/SOURCES \ -v $(CURDIR)/rpmbuild/RPMS:/root/rpmbuild/RPMS \ @@ -20,6 +21,7 @@ RPMBUILD_FLAGS=-ba\ --define '_version $(word 1,$(GEN_RPM_VER))' \ --define '_origversion $(word 4, $(GEN_RPM_VER))' \ SPECS/docker-ce.spec SPECS/docker-ce-cli.spec +RUN=$(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_FILES)) @@ -50,24 +52,24 @@ centos: centos-7 ## build all centos rpm packages fedora-28: ## build fedora-28 rpm packages fedora-28: $(SOURCES) $(CHOWN) -R root:root rpmbuild - docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . - $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) + $(BUILD) + $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: fedora-27 fedora-27: ## build fedora-27 rpm packages fedora-27: $(SOURCES) $(CHOWN) -R root:root rpmbuild - docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . - $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) + $(BUILD) + $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: centos-7 centos-7: ## build centos-7 rpm packages centos-7: $(SOURCES) $(CHOWN) -R root:root rpmbuild - docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . - $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) + $(BUILD) + $(RUN) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild rpmbuild/SOURCES/cli.tgz: diff --git a/components/packaging/rpm/centos-7/Dockerfile.aarch64 b/components/packaging/rpm/centos-7/Dockerfile similarity index 80% rename from components/packaging/rpm/centos-7/Dockerfile.aarch64 rename to components/packaging/rpm/centos-7/Dockerfile index 0851a3ee9c..6d5c01d55b 100644 --- a/components/packaging/rpm/centos-7/Dockerfile.aarch64 +++ b/components/packaging/rpm/centos-7/Dockerfile @@ -9,8 +9,10 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux -COPY SPECS /root/rpmbuild/SPECS RUN yum install -y rpm-build rpmlint +COPY SPECS /root/rpmbuild/SPECS +# Overwrite repo that was failing on aarch64 +RUN sed -i 's/altarch/centos/g' /etc/yum.repos.d/CentOS-Sources.repo RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec COPY --from=golang /usr/local/go /usr/local/go/ WORKDIR /root/rpmbuild diff --git a/components/packaging/rpm/centos-7/Dockerfile.x86_64 b/components/packaging/rpm/centos-7/Dockerfile.x86_64 deleted file mode 100644 index b6334f62dd..0000000000 --- a/components/packaging/rpm/centos-7/Dockerfile.x86_64 +++ /dev/null @@ -1,17 +0,0 @@ -ARG GO_IMAGE -FROM ${GO_IMAGE} as golang - -FROM centos:7 -ENV DISTRO centos -ENV SUITE 7 -ENV GOPATH=/go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV AUTO_GOPATH 1 -ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS seccomp selinux -RUN yum install -y rpm-build rpmlint -COPY SPECS /root/rpmbuild/SPECS -RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec -COPY --from=golang /usr/local/go /usr/local/go/ -WORKDIR /root/rpmbuild -ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-27/Dockerfile.aarch64 b/components/packaging/rpm/fedora-27/Dockerfile similarity index 100% rename from components/packaging/rpm/fedora-27/Dockerfile.aarch64 rename to components/packaging/rpm/fedora-27/Dockerfile diff --git a/components/packaging/rpm/fedora-27/Dockerfile.x86_64 b/components/packaging/rpm/fedora-27/Dockerfile.x86_64 deleted file mode 100644 index ee2f8b0860..0000000000 --- a/components/packaging/rpm/fedora-27/Dockerfile.x86_64 +++ /dev/null @@ -1,17 +0,0 @@ -ARG GO_IMAGE -FROM ${GO_IMAGE} as golang - -FROM fedora:27 -ENV DISTRO fedora -ENV SUITE 27 -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV AUTO_GOPATH 1 -ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS seccomp selinux -RUN dnf install -y rpm-build rpmlint dnf-plugins-core -COPY SPECS /root/rpmbuild/SPECS -RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec -COPY --from=golang /usr/local/go /usr/local/go/ -WORKDIR /root/rpmbuild -ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-28/Dockerfile.x86_64 b/components/packaging/rpm/fedora-28/Dockerfile similarity index 100% rename from components/packaging/rpm/fedora-28/Dockerfile.x86_64 rename to components/packaging/rpm/fedora-28/Dockerfile diff --git a/components/packaging/rpm/fedora-28/Dockerfile.aarch64 b/components/packaging/rpm/fedora-28/Dockerfile.aarch64 deleted file mode 100644 index 797422fa8f..0000000000 --- a/components/packaging/rpm/fedora-28/Dockerfile.aarch64 +++ /dev/null @@ -1,17 +0,0 @@ -ARG GO_IMAGE -FROM ${GO_IMAGE} as golang - -FROM fedora:28 -ENV DISTRO fedora -ENV SUITE 28 -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV AUTO_GOPATH 1 -ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS seccomp selinux -RUN dnf install -y rpm-build rpmlint dnf-plugins-core -COPY SPECS /root/rpmbuild/SPECS -RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec -COPY --from=golang /usr/local/go /usr/local/go/ -WORKDIR /root/rpmbuild -ENTRYPOINT ["/bin/rpmbuild"] From 126bb1b3a0f45011a0f155c99f1ad719e63075f1 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 17 Aug 2018 18:33:02 +0000 Subject: [PATCH 32/39] Add some changes to make things more configurable Allows us to switch out debian files and rpm specs on the fly and also gives us an out to have ARCH specific dockerfiles if we need them for RPM's. The same strategy can be used for DEB's if need be Signed-off-by: Eli Uriegas Upstream-commit: b72dc2edb8329151bfe2df6989fb329f41e720fb Component: packaging --- components/packaging/deb/Makefile | 4 +++- components/packaging/deb/debian-buster/Dockerfile | 3 ++- components/packaging/deb/debian-jessie/Dockerfile | 3 ++- components/packaging/deb/debian-stretch/Dockerfile | 3 ++- components/packaging/deb/raspbian-jessie/Dockerfile | 3 ++- components/packaging/deb/raspbian-stretch/Dockerfile | 3 ++- components/packaging/deb/ubuntu-bionic/Dockerfile | 3 ++- components/packaging/deb/ubuntu-trusty/Dockerfile | 3 ++- components/packaging/deb/ubuntu-xenial/Dockerfile | 3 ++- components/packaging/rpm/Makefile | 12 ++++++++++-- 10 files changed, 29 insertions(+), 11 deletions(-) diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 4dba9fd2b7..7a9a6b8f0e 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -12,8 +12,10 @@ DEB_VERSION=$(shell ./gen-deb-ver $(CLI_DIR) "$(VERSION)") CHOWN:=docker run --rm -v $(CURDIR):/v -w /v alpine chown EPOCH?=2 -BUILD=docker build \ +COMMON_FILES=common +BUILD?=docker build \ --build-arg GO_IMAGE=$(GO_IMAGE) \ + --build-arg COMMON_FILES=$(COMMON_FILES) \ -t debbuild-$@/$(ARCH) \ -f $(CURDIR)/$@/Dockerfile . RUN=docker run --rm -i \ diff --git a/components/packaging/deb/debian-buster/Dockerfile b/components/packaging/deb/debian-buster/Dockerfile index 9f6b1b6691..7f2613f45b 100644 --- a/components/packaging/deb/debian-buster/Dockerfile +++ b/components/packaging/deb/debian-buster/Dockerfile @@ -11,7 +11,8 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux ENV RUNC_BUILDTAGS apparmor seccomp selinux -COPY common/ /root/build-deb/debian +ARG COMMON_FILES +COPY ${COMMON_FILES} /root/build-deb/debian RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control # Copy our sources and untar them diff --git a/components/packaging/deb/debian-jessie/Dockerfile b/components/packaging/deb/debian-jessie/Dockerfile index 331e82cec5..03a7ce4cc8 100644 --- a/components/packaging/deb/debian-jessie/Dockerfile +++ b/components/packaging/deb/debian-jessie/Dockerfile @@ -11,7 +11,8 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux ENV RUNC_BUILDTAGS apparmor seccomp selinux -COPY common/ /root/build-deb/debian +ARG COMMON_FILES +COPY ${COMMON_FILES} /root/build-deb/debian RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control # Copy our sources and untar them diff --git a/components/packaging/deb/debian-stretch/Dockerfile b/components/packaging/deb/debian-stretch/Dockerfile index bb482d8d07..3037785979 100644 --- a/components/packaging/deb/debian-stretch/Dockerfile +++ b/components/packaging/deb/debian-stretch/Dockerfile @@ -11,7 +11,8 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux ENV RUNC_BUILDTAGS apparmor seccomp selinux -COPY common/ /root/build-deb/debian +ARG COMMON_FILES +COPY ${COMMON_FILES} /root/build-deb/debian RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control # Copy our sources and untar them diff --git a/components/packaging/deb/raspbian-jessie/Dockerfile b/components/packaging/deb/raspbian-jessie/Dockerfile index f218093e21..15bf9a3ea4 100644 --- a/components/packaging/deb/raspbian-jessie/Dockerfile +++ b/components/packaging/deb/raspbian-jessie/Dockerfile @@ -11,7 +11,8 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux ENV RUNC_BUILDTAGS apparmor seccomp selinux -COPY common/ /root/build-deb/debian +ARG COMMON_FILES +COPY ${COMMON_FILES} /root/build-deb/debian RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control # Copy our sources and untar them diff --git a/components/packaging/deb/raspbian-stretch/Dockerfile b/components/packaging/deb/raspbian-stretch/Dockerfile index d574ae64a2..3b2cbe8800 100644 --- a/components/packaging/deb/raspbian-stretch/Dockerfile +++ b/components/packaging/deb/raspbian-stretch/Dockerfile @@ -11,7 +11,8 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux ENV RUNC_BUILDTAGS apparmor seccomp selinux -COPY common/ /root/build-deb/debian +ARG COMMON_FILES +COPY ${COMMON_FILES} /root/build-deb/debian RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control # Copy our sources and untar them diff --git a/components/packaging/deb/ubuntu-bionic/Dockerfile b/components/packaging/deb/ubuntu-bionic/Dockerfile index 690d71629a..61dfde41c1 100644 --- a/components/packaging/deb/ubuntu-bionic/Dockerfile +++ b/components/packaging/deb/ubuntu-bionic/Dockerfile @@ -11,7 +11,8 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux ENV RUNC_BUILDTAGS apparmor seccomp selinux -COPY common/ /root/build-deb/debian +ARG COMMON_FILES +COPY ${COMMON_FILES} /root/build-deb/debian RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control # Copy our sources and untar them diff --git a/components/packaging/deb/ubuntu-trusty/Dockerfile b/components/packaging/deb/ubuntu-trusty/Dockerfile index d0681457f5..b21b674dc9 100644 --- a/components/packaging/deb/ubuntu-trusty/Dockerfile +++ b/components/packaging/deb/ubuntu-trusty/Dockerfile @@ -11,7 +11,8 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux ENV RUNC_BUILDTAGS apparmor seccomp selinux -COPY common/ /root/build-deb/debian +ARG COMMON_FILES +COPY ${COMMON_FILES} /root/build-deb/debian RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control # Copy our sources and untar them diff --git a/components/packaging/deb/ubuntu-xenial/Dockerfile b/components/packaging/deb/ubuntu-xenial/Dockerfile index 7814ab982b..f728407ca0 100644 --- a/components/packaging/deb/ubuntu-xenial/Dockerfile +++ b/components/packaging/deb/ubuntu-xenial/Dockerfile @@ -11,7 +11,8 @@ ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux ENV RUNC_BUILDTAGS apparmor seccomp selinux -COPY common/ /root/build-deb/debian +ARG COMMON_FILES +COPY ${COMMON_FILES} /root/build-deb/debian RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control # Copy our sources and untar them diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index d94f7a5342..e250cc395f 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -10,7 +10,15 @@ GO_VERSION:=1.10.3 GO_IMAGE=$(GO_BASE_IMAGE):$(GO_VERSION) GEN_RPM_VER=$(shell ./gen-rpm-ver $(CLI_DIR) $(VERSION)) CHOWN=docker run --rm -i -v $(CURDIR):/v -w /v alpine chown -BUILD=docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile . + +DOCKERFILE=Dockerfile +ifdef NEEDS_ARCH_SPECIFIC + DOCKERFILE=Dockerfile.$(ARCH) +endif +BUILD=docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/$(DOCKERFILE) . + +SPEC_FILES=docker-ce.spec docker-ce-cli.spec +SPECS=$(addprefix SPECS/, $(SPEC_FILES)) RPMBUILD=docker run --privileged --rm -i\ -v $(CURDIR)/rpmbuild/SOURCES:/root/rpmbuild/SOURCES \ -v $(CURDIR)/rpmbuild/RPMS:/root/rpmbuild/RPMS \ @@ -20,7 +28,7 @@ RPMBUILD_FLAGS=-ba\ --define '_release $(word 2,$(GEN_RPM_VER))' \ --define '_version $(word 1,$(GEN_RPM_VER))' \ --define '_origversion $(word 4, $(GEN_RPM_VER))' \ - SPECS/docker-ce.spec SPECS/docker-ce-cli.spec + $(SPECS) RUN=$(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json From 26a46ac890eb736410895f738a83cb2233b80ee7 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 17 Aug 2018 20:25:50 +0000 Subject: [PATCH 33/39] Make the curl for containerd-proxy more resilient Was reporting 404's using the old url for some reason, might have to refactor this in the future to just use a git clone... Signed-off-by: Eli Uriegas Upstream-commit: 763ad6aa7ac24c269dc1dfa223771671acffc8fc Component: packaging --- components/packaging/deb/Makefile | 2 +- components/packaging/rpm/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 7a9a6b8f0e..83e63888c4 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -124,7 +124,7 @@ sources/cli.tgz: sources/containerd-proxy.tgz: mkdir -p tmp/ - curl -fL -o tmp/containerd-proxy.tgz "https://github.com/crosbymichael/containerd-proxy/archive/$(CONTAINERD_PROXY_COMMIT)/ours.tar.gz" + curl -fL -o tmp/containerd-proxy.tgz "https://github.com/crosbymichael/containerd-proxy/archive/$(CONTAINERD_PROXY_COMMIT).tar.gz" tar xzf tmp/containerd-proxy.tgz -C tmp/ mv tmp/containerd-proxy-$(CONTAINERD_PROXY_COMMIT) tmp/containerd-proxy mkdir -p $(@D) diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index e250cc395f..d4e6fa7a74 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -90,7 +90,7 @@ rpmbuild/SOURCES/cli.tgz: rpmbuild/SOURCES/containerd-proxy.tgz: mkdir -p tmp/ - curl -fL -o tmp/containerd-proxy.tgz "https://github.com/crosbymichael/containerd-proxy/archive/$(CONTAINERD_PROXY_COMMIT)/ours.tar.gz" + curl -fL -o tmp/containerd-proxy.tgz "https://github.com/crosbymichael/containerd-proxy/archive/$(CONTAINERD_PROXY_COMMIT).tar.gz" tar xzf tmp/containerd-proxy.tgz -C tmp/ mv tmp/containerd-proxy-$(CONTAINERD_PROXY_COMMIT) tmp/containerd-proxy mkdir -p $(@D) From 82d8af28918354c2c70b6fb1bb0097dcce90e6a6 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 17 Aug 2018 21:22:05 +0000 Subject: [PATCH 34/39] Make the build variables eval at reference Makes it so that you can overwrite them better if you include this makefile in another makefile... Signed-off-by: Eli Uriegas Upstream-commit: 446f8d31394ae35fc38187aa5e40627b33a95a27 Component: packaging --- components/packaging/rpm/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index d4e6fa7a74..8782c70237 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -7,7 +7,7 @@ GITCOMMIT=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD) VERSION?=0.0.0-dev GO_BASE_IMAGE=golang GO_VERSION:=1.10.3 -GO_IMAGE=$(GO_BASE_IMAGE):$(GO_VERSION) +GO_IMAGE?=$(GO_BASE_IMAGE):$(GO_VERSION) GEN_RPM_VER=$(shell ./gen-rpm-ver $(CLI_DIR) $(VERSION)) CHOWN=docker run --rm -i -v $(CURDIR):/v -w /v alpine chown @@ -15,21 +15,21 @@ DOCKERFILE=Dockerfile ifdef NEEDS_ARCH_SPECIFIC DOCKERFILE=Dockerfile.$(ARCH) endif -BUILD=docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/$(DOCKERFILE) . +BUILD?=docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/$(DOCKERFILE) . -SPEC_FILES=docker-ce.spec docker-ce-cli.spec -SPECS=$(addprefix SPECS/, $(SPEC_FILES)) +SPEC_FILES?=docker-ce.spec docker-ce-cli.spec +SPECS?=$(addprefix SPECS/, $(SPEC_FILES)) RPMBUILD=docker run --privileged --rm -i\ -v $(CURDIR)/rpmbuild/SOURCES:/root/rpmbuild/SOURCES \ -v $(CURDIR)/rpmbuild/RPMS:/root/rpmbuild/RPMS \ -v $(CURDIR)/rpmbuild/SRPMS:/root/rpmbuild/SRPMS -RPMBUILD_FLAGS=-ba\ +RPMBUILD_FLAGS?=-ba\ --define '_gitcommit $(word 3,$(GEN_RPM_VER))' \ --define '_release $(word 2,$(GEN_RPM_VER))' \ --define '_version $(word 1,$(GEN_RPM_VER))' \ --define '_origversion $(word 4, $(GEN_RPM_VER))' \ $(SPECS) -RUN=$(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) +RUN?=$(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_FILES)) From d0741cffba5edf1f9553948c6f54970a13fe1348 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Sat, 18 Aug 2018 21:27:35 +0000 Subject: [PATCH 35/39] Make IMAGE_TAG configurable for dockerd.json Signed-off-by: Eli Uriegas Upstream-commit: aabd5d3b852b3b3f7131cdd622a9e5078f193819 Component: packaging --- components/packaging/common/dockerd.json | 2 +- components/packaging/deb/Makefile | 4 +++- components/packaging/rpm/Makefile | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/components/packaging/common/dockerd.json b/components/packaging/common/dockerd.json index d09197cafa..646c3c9144 100644 --- a/components/packaging/common/dockerd.json +++ b/components/packaging/common/dockerd.json @@ -1,5 +1,5 @@ { - "image": "docker.io/seemethere/engine-community:0.0.0-20180814124044-678d4b3a6d.x86_64", + "image": "docker.io/docker/engine-community:${IMAGE_TAG}", "namespace":"docker", "args": [ "-s", "overlay", diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 83e63888c4..2e5a487518 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -29,6 +29,8 @@ RUN=docker run --rm -i \ SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json SOURCES=$(addprefix sources/, $(SOURCE_FILES)) +IMAGE_TAG=nightly + .PHONY: help help: ## show make targets @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) @@ -145,6 +147,6 @@ sources/docker.service: ../systemd/docker.service sources/dockerd.json: ../common/dockerd.json mkdir -p $(@D) - cp $< $@ + sed 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' $< > $@ # TODO: Figure out a sufficient offline solution diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index 8782c70237..bbda8cd617 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -111,6 +111,6 @@ rpmbuild/SOURCES/docker.service: ../systemd/docker.service rpmbuild/SOURCES/dockerd.json: ../common/dockerd.json mkdir -p $(@D) - cp $< $@ + sed 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' $< > $@ # TODO: Figure out a sufficient offline solution From a59390fe70963e962c56e81dbab76e251a4f2b13 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Sat, 18 Aug 2018 21:49:50 +0000 Subject: [PATCH 36/39] Remove s390x for now Signed-off-by: Eli Uriegas Upstream-commit: 660431eec07bb7a934c483bb2355b9f121fb98e2 Component: packaging --- components/packaging/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/packaging/Jenkinsfile b/components/packaging/Jenkinsfile index 0e1b4dc760..0ce470a856 100644 --- a/components/packaging/Jenkinsfile +++ b/components/packaging/Jenkinsfile @@ -53,7 +53,7 @@ test_steps = [ arches = [ "x86_64", - "s390x", + // "s390x", "ppc64le", "aarch64", "armhf" From 3f276a5ee3d927819aa3aef1adac52cefd88465e Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Mon, 20 Aug 2018 14:58:57 +0000 Subject: [PATCH 37/39] Make ENGINE_IMAGE configurable for dockerd.json Signed-off-by: Eli Uriegas Upstream-commit: 657c7899302691373836bbd28fc4c069da64d90e Component: packaging --- components/packaging/common/dockerd.json | 2 +- components/packaging/deb/Makefile | 3 ++- components/packaging/rpm/Makefile | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/components/packaging/common/dockerd.json b/components/packaging/common/dockerd.json index 646c3c9144..04b35bc739 100644 --- a/components/packaging/common/dockerd.json +++ b/components/packaging/common/dockerd.json @@ -1,5 +1,5 @@ { - "image": "docker.io/docker/engine-community:${IMAGE_TAG}", + "image": "docker.io/${ENGINE_IMAGE}:${IMAGE_TAG}", "namespace":"docker", "args": [ "-s", "overlay", diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 2e5a487518..5ad4192aff 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -28,6 +28,7 @@ RUN=docker run --rm -i \ SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json SOURCES=$(addprefix sources/, $(SOURCE_FILES)) +ENGINE_IMAGE=docker/engine-community IMAGE_TAG=nightly @@ -147,6 +148,6 @@ sources/docker.service: ../systemd/docker.service sources/dockerd.json: ../common/dockerd.json mkdir -p $(@D) - sed 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' $< > $@ + sed -e 's!$${ENGINE_IMAGE}!$(ENGINE_IMAGE)!' -e 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' $< > $@ # TODO: Figure out a sufficient offline solution diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index bbda8cd617..f429b41859 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -30,6 +30,7 @@ RPMBUILD_FLAGS?=-ba\ --define '_origversion $(word 4, $(GEN_RPM_VER))' \ $(SPECS) RUN?=$(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) +ENGINE_IMAGE=docker/engine-community SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_FILES)) @@ -111,6 +112,6 @@ rpmbuild/SOURCES/docker.service: ../systemd/docker.service rpmbuild/SOURCES/dockerd.json: ../common/dockerd.json mkdir -p $(@D) - sed 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' $< > $@ + sed -e 's!$${ENGINE_IMAGE}!$(ENGINE_IMAGE)!' -e 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' $< > $@ # TODO: Figure out a sufficient offline solution From b3c9a8850997d5b700237d7120bde26899ad8e95 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Mon, 20 Aug 2018 19:57:53 +0000 Subject: [PATCH 38/39] Do offline bundles for engine installs Signed-off-by: Eli Uriegas Upstream-commit: fe03039776edbc90053b510ae6e72657340b1ccb Component: packaging --- components/packaging/common/dockerd.json | 3 ++- components/packaging/deb/Makefile | 22 ++++++++++++++++-- components/packaging/deb/common/rules | 1 + components/packaging/rpm/Makefile | 23 +++++++++++++++++-- components/packaging/rpm/SPECS/docker-ce.spec | 3 +++ 5 files changed, 47 insertions(+), 5 deletions(-) diff --git a/components/packaging/common/dockerd.json b/components/packaging/common/dockerd.json index 04b35bc739..e96b9bc37b 100644 --- a/components/packaging/common/dockerd.json +++ b/components/packaging/common/dockerd.json @@ -1,5 +1,6 @@ { - "image": "docker.io/${ENGINE_IMAGE}:${IMAGE_TAG}", + "image": "docker.io/${ENGINE_IMAGE}", + "imagePath": "/var/lib/docker-engine/engine.tar", "namespace":"docker", "args": [ "-s", "overlay", diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 5ad4192aff..8b38e170fb 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -26,7 +26,7 @@ RUN=docker run --rm -i \ -v $(CURDIR)/debbuild/$@:/build \ debbuild-$@/$(ARCH) -SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json +SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json engine.tar SOURCES=$(addprefix sources/, $(SOURCE_FILES)) ENGINE_IMAGE=docker/engine-community @@ -44,6 +44,7 @@ clean: ## remove build artifacts $(RM) -r sources [ ! -d artifacts ] || $(CHOWN) -R $(shell id -u):$(shell id -g) artifacts $(RM) -r artifacts + -docker rm docker2oci engine-$(ARCH).tar: $(MAKE) -C ../image image-linux @@ -150,4 +151,21 @@ sources/dockerd.json: ../common/dockerd.json mkdir -p $(@D) sed -e 's!$${ENGINE_IMAGE}!$(ENGINE_IMAGE)!' -e 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' $< > $@ -# TODO: Figure out a sufficient offline solution +# TODO: Eventually clean this up when we release an image with a manifest +DOCKER2OCI=artifacts/docker2oci +$(DOCKER2OCI): + -$(CHOWN) -R $(shell id -u):$(shell id -g) $(@D) + docker run --name docker2oci $(GO_IMAGE) sh -c 'go get github.com/coolljt0725/docker2oci' + mkdir -p $(@D) + docker cp docker2oci:/go/bin/docker2oci "$@" + docker rm -f docker2oci + $(CHOWN) -R $(shell id -u):$(shell id -g) $(@D) + +# offline bundle +sources/engine.tar: $(DOCKER2OCI) + $(MAKE) -C ../image ENGINE_IMAGE=$(ENGINE_IMAGE) image-linux + mkdir -p artifacts + docker save -o artifacts/docker-engine.tar $$(cat ../image/image-linux) + ./$(DOCKER2OCI) -i artifacts/docker-engine.tar artifacts/engine-image + mkdir -p $(@D) + tar c -C artifacts/engine-image . > $@ diff --git a/components/packaging/deb/common/rules b/components/packaging/deb/common/rules index 35c6fc0d4f..73a2ffb159 100644 --- a/components/packaging/deb/common/rules +++ b/components/packaging/deb/common/rules @@ -24,6 +24,7 @@ override_dh_auto_install: # docker-ce install install -D -m 0755 /go/src/github.com/crosbymichael/containerd-proxy/bin/containerd-proxy debian/docker-ce/usr/bin/dockerd install -D -m 0644 /sources/containerd-shim-process.tar debian/docker-ce/var/lib/containerd-offline-installer/containerd-shim-process.tar + install -D -m 0644 /sources/engine.tar debian/docker-ce/var/lib/docker-engine/engine.tar install -D -m 0644 /sources/docker.service debian/docker-ce/lib/systemd/system/docker.service install -D -m 0644 /sources/dockerd.json debian/docker-ce/etc/containerd-proxy/dockerd.json diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index f429b41859..ee7dbbcbbf 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -32,9 +32,10 @@ RPMBUILD_FLAGS?=-ba\ RUN?=$(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) ENGINE_IMAGE=docker/engine-community -SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json +SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json engine.tar SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_FILES)) + .PHONY: help help: ## show make targets @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) @@ -47,6 +48,7 @@ clean: ## remove build artifacts $(RM) -r artifacts/ [ ! -d tmp ] || $(CHOWN) -R $(shell id -u):$(shell id -g) tmp $(RM) -r tmp/ + -docker rm docker2oci .PHONY: rpm rpm: fedora centos ## build all rpm packages @@ -114,4 +116,21 @@ rpmbuild/SOURCES/dockerd.json: ../common/dockerd.json mkdir -p $(@D) sed -e 's!$${ENGINE_IMAGE}!$(ENGINE_IMAGE)!' -e 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' $< > $@ -# TODO: Figure out a sufficient offline solution +# TODO: Eventually clean this up when we release an image with a manifest +DOCKER2OCI=artifacts/docker2oci +$(DOCKER2OCI): + -$(CHOWN) -R $(shell id -u):$(shell id -g) $(@D) + docker run --name docker2oci $(GO_IMAGE) sh -c 'go get github.com/coolljt0725/docker2oci' + mkdir -p $(@D) + docker cp docker2oci:/go/bin/docker2oci "$@" + docker rm -f docker2oci + $(CHOWN) -R $(shell id -u):$(shell id -g) $(@D) + +# offline bundle +rpmbuild/SOURCES/engine.tar: $(DOCKER2OCI) + $(MAKE) -C ../image ENGINE_IMAGE=$(ENGINE_IMAGE) image-linux + mkdir -p artifacts + docker save -o artifacts/docker-engine.tar $$(cat ../image/image-linux) + ./$(DOCKER2OCI) -i artifacts/docker-engine.tar artifacts/engine-image + mkdir -p $(@D) + tar c -C artifacts/engine-image . > $@ diff --git a/components/packaging/rpm/SPECS/docker-ce.spec b/components/packaging/rpm/SPECS/docker-ce.spec index 77cda6a7f2..96693ccaf4 100644 --- a/components/packaging/rpm/SPECS/docker-ce.spec +++ b/components/packaging/rpm/SPECS/docker-ce.spec @@ -7,6 +7,7 @@ Epoch: 2 Source0: containerd-proxy.tgz Source1: containerd-shim-process.tar Source2: docker.service +Source3: engine.tar Summary: The open-source application container engine Group: Tools/Docker License: ASL 2.0 @@ -63,12 +64,14 @@ popd # Install containerd-proxy as dockerd install -D -m 0755 %{_topdir}/BUILD/src/containerd-proxy/bin/containerd-proxy $RPM_BUILD_ROOT/%{_bindir}/dockerd install -D -m 0644 %{_topdir}/SOURCES/containerd-shim-process.tar $RPM_BUILD_ROOT/%{_sharedstatedir}/containerd-offline-installer/containerd-shim-process.tar +install -D -m 0644 %{_topdir}/SOURCES/engine.tar $RPM_BUILD_ROOT/%{_sharedstatedir}/docker-engine/engine.tar install -D -m 0644 %{_topdir}/SOURCES/docker.service $RPM_BUILD_ROOT/%{_unitdir}/docker.service install -D -m 0644 %{_topdir}/SOURCES/dockerd.json $RPM_BUILD_ROOT/etc/containerd-proxy/dockerd.json %files /%{_bindir}/dockerd /%{_sharedstatedir}/containerd-offline-installer/containerd-shim-process.tar +/%{_sharedstatedir}/docker-engine/engine.tar /%{_unitdir}/docker.service /etc/containerd-proxy/dockerd.json From dbc4cb6ea009710a52e85437203b9e6beba0f67a Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Mon, 20 Aug 2018 21:13:52 +0000 Subject: [PATCH 39/39] Set containerd to be a systemd bind for docker The daemon won't actually start without containerd Signed-off-by: Eli Uriegas Upstream-commit: 16037618282dc5076089c7b749cdd07376650f8d Component: packaging --- components/packaging/systemd/docker.service | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/components/packaging/systemd/docker.service b/components/packaging/systemd/docker.service index 13b2a04750..4322dce30e 100644 --- a/components/packaging/systemd/docker.service +++ b/components/packaging/systemd/docker.service @@ -1,8 +1,9 @@ [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com -After=network-online.target firewalld.service containerd.service -Wants=network-online.target containerd.service +BindsTo=containerd.service +After=network-online.target firewalld.service +Wants=network-online.target [Service] # Install containerd-shim-process if it's not already installed