47 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
# define variables.
 | 
						|
IMAGE_VARIANT=fpm
 | 
						|
IMAGE_VERSION=20
 | 
						|
UPSTREAM_IMAGE=nextcloud
 | 
						|
UPSTREAM_IMAGE_TAG=${IMAGE_VERSION}-${IMAGE_VARIANT}
 | 
						|
IMAGE=bkraul/nextcloud
 | 
						|
 | 
						|
# set username and password
 | 
						|
# requires vars DOCKER_USER and DOCKER_PASS to be defined before calling.
 | 
						|
 | 
						|
# useful functions.
 | 
						|
function docker_tag_exists() {
 | 
						|
    TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${DOCKER_USER}'", "password": "'${DOCKER_PASS}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
 | 
						|
    curl --silent -f --head -lL https://hub.docker.com/v2/repositories/$1/tags/$2/ > /dev/null
 | 
						|
}
 | 
						|
 | 
						|
# pull the parent image from docker hub.
 | 
						|
docker pull ${UPSTREAM_IMAGE}:${UPSTREAM_IMAGE_TAG}
 | 
						|
UPSTREAM_ID=$(docker image inspect --format='{{index .Id}}' ${UPSTREAM_IMAGE}:${UPSTREAM_IMAGE_TAG})
 | 
						|
UPSTREAM_ID=${UPSTREAM_ID:7}
 | 
						|
 | 
						|
# get the version number.
 | 
						|
NEXTCLOUD_VERSION=$(docker inspect ${UPSTREAM_IMAGE}:${UPSTREAM_IMAGE_TAG} | jq -r '.[].Config.Env[] | select(match("^NEXTCLOUD_VERSION"))')
 | 
						|
NEXTCLOUD_VERSION=${NEXTCLOUD_VERSION:18}
 | 
						|
IMAGE_TAG=${NEXTCLOUD_VERSION}-${IMAGE_VARIANT}
 | 
						|
 | 
						|
if docker_tag_exists ${IMAGE} ${IMAGE_TAG}; then
 | 
						|
    # nothing to do, the image already exists.
 | 
						|
    echo Image ${IMAGE}:${IMAGE_TAG} already exists.
 | 
						|
else
 | 
						|
    # image doesn't exist we need build and push
 | 
						|
    echo Image ${IMAGE}:${IMAGE_TAG} does not exist.
 | 
						|
    echo "Building image(s)..."
 | 
						|
    docker build $1 \
 | 
						|
      -t ${IMAGE}:${UPSTREAM_IMAGE_TAG} \
 | 
						|
      -t ${IMAGE}:${IMAGE_TAG}
 | 
						|
    if [ $? == 0 ]; then
 | 
						|
      echo "Pushing image(s)..."
 | 
						|
      docker push ${IMAGE}:${IMAGE_TAG}
 | 
						|
      docker push ${IMAGE}:${UPSTREAM_IMAGE_TAG}
 | 
						|
    else
 | 
						|
      echo "The build operation failed."
 | 
						|
      echo "Please debug and try again."
 | 
						|
    fi
 | 
						|
fi |