Brush up proxy and rss plugin images, build for multiarch support #1483

This commit is contained in:
Kristian Haugene 2020-12-06 21:54:17 +01:00
parent 7419fecfaa
commit 643740c820
10 changed files with 70 additions and 111 deletions

View File

@ -13,7 +13,34 @@ workflows:
build-docker-images:
jobs:
- build-with-buildx:
name: build-transmission-openvpn-images
context: dockerhub
image-name: haugene/transmission-openvpn
build-context: "."
filters:
branches:
only:
- dev
- master
tags:
only: /^\d+\.\d+.*/
- build-with-buildx:
name: build-reverse-proxy-images
context: dockerhub
image-name: haugene/transmission-openvpn-proxy
build-context: "proxy"
filters:
branches:
only:
- dev
- master
tags:
only: /^\d+\.\d+.*/
- build-with-buildx:
name: build-rss-plugin-images
context: dockerhub
image-name: haugene/transmission-rss
build-context: "plugins/rss"
filters:
branches:
only:
@ -25,6 +52,11 @@ workflows:
# Job definitions, used by the workflows.
jobs:
build-with-buildx:
parameters:
image-name:
type: string
build-context:
type: string
machine:
image: ubuntu-2004:202010-01
steps:
@ -47,10 +79,10 @@ jobs:
docker buildx use mybuilder
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx ls
docker buildx build -t haugene/transmission-openvpn:$IMAGE_TAG --progress plain \
docker buildx build -t << parameters.image-name >>:$IMAGE_TAG --progress plain \
--platform linux/arm,linux/arm64,linux/amd64 \
--build-arg REVISION=$CIRCLE_SHA1 \
--push .
--push << parameters.build-context >>
build-and-deploy-gh-pages:
docker:

View File

@ -1,17 +1,12 @@
FROM ubuntu:16.04
MAINTAINER Kristian Haugene
# Update packages and install software
RUN apt-get update \
&& apt-get -y upgrade \
&& apt-get -y install curl gcc make ruby2.3-dev \
&& gem install transmission-rss \
&& curl -L https://github.com/jwilder/dockerize/releases/download/v0.5.0/dockerize-linux-amd64-v0.5.0.tar.gz | tar -C /usr/local/bin -xzv
ADD . /etc/transmission-rss
FROM ruby:2-alpine
# Image caching, put "never changing" layers first
CMD ["/etc/transmission-rss/start.sh"]
ENV TRANSMISSION_DOWNLOAD_DIR=/data/completed \
RSS_URL=**None** \
RSS_REGEXP=
CMD ["/etc/transmission-rss/start.sh"]
# Install build-base and transmission-rss gem
RUN apk add build-base && gem install transmission-rss
ADD . /etc/transmission-rss

View File

@ -1,17 +0,0 @@
FROM balenalib/raspberry-pi:stretch
MAINTAINER Kristian Haugene
# Update packages and install software
RUN apt-get update \
&& apt-get -y upgrade \
&& apt-get -y install curl gcc make ruby2.3-dev libc6-dev \
&& gem install transmission-rss \
&& curl -L https://github.com/jwilder/dockerize/releases/download/v0.2.0/dockerize-linux-armhf-v0.2.0.tar.gz | tar -C /usr/local/bin -xzv
ADD . /etc/transmission-rss
ENV TRANSMISSION_DOWNLOAD_DIR=/data/completed \
RSS_URL=**None** \
RSS_REGEXP=
CMD ["/etc/transmission-rss/start.sh"]

View File

@ -1,23 +0,0 @@
# This Dockerfile is for building ARM images on x64 machine like Docker Hub
FROM balenalib/raspberry-pi:stretch
MAINTAINER Kristian Haugene
RUN [ "cross-build-start" ]
# Update packages and install software
RUN apt-get update \
&& apt-get -y upgrade \
&& apt-get -y install curl gcc make ruby2.3-dev libc6-dev \
&& gem install transmission-rss \
&& curl -L https://github.com/jwilder/dockerize/releases/download/v0.2.0/dockerize-linux-armhf-v0.2.0.tar.gz | tar -C /usr/local/bin -xzv
ADD . /etc/transmission-rss
ENV TRANSMISSION_DOWNLOAD_DIR=/data/completed \
RSS_URL=**None** \
RSS_REGEXP=
CMD ["/etc/transmission-rss/start.sh"]
RUN [ "cross-build-end" ]

View File

@ -1,5 +0,0 @@
#! /bin/bash
export TRANSMISSION_DOWNLOAD_DIR={{ .Env.TRANSMISSION_DOWNLOAD_DIR }}
export RSS_URL="{{ .Env.RSS_URL }}"
export RSS_REGEXP="{{ .Env.RSS_REGEXP }}"

View File

@ -1,16 +1,31 @@
#!/bin/sh
# Source our persisted env variables from container startup
dockerize -template /etc/transmission-rss/environment-variables.tmpl:/etc/transmission-rss/environment-variables.sh
. /etc/transmission-rss/environment-variables.sh
#
# This script tries to figure out how the container is configured.
# The user has two options:
# 1. Mount a custom config file to be used
# 2. Use the built in template that supports one feed with regex filter
#
if [ -z "${RSS_URL}" ] || [ "${RSS_URL}" = "**None**" ] ; then
echo "NO RSS URL CONFIGURED, IGNORING"
if [ -f /etc/transmission-rss.conf ] ; then
echo "Found mounted /etc/transmission-rss.conf file"
elif [ -z "${RSS_URL}" ] || [ "${RSS_URL}" = "**None**" ] ; then
echo "Error: No config is mounted and RSS_URL is not defined."
echo "Have no config to start from. Exit with error code."
exit 1
else
# Configure plugin based on template. Use sed to insert
sed "s^url: placeholder^url: $RSS_URL^" < /etc/transmission-rss/transmission-rss.tmpl \
| sed "s^download_path: placeholder^download_path: $TRANSMISSION_DOWNLOAD_DIR^" \
> /etc/transmission-rss.conf
if [ -z "${RSS_REGEXP}" ] ; then
sed -i 's/regexp:*//g' /etc/transmission-rss/transmission-rss.tmpl
sed -i '/regexp/d' /etc/transmission-rss.conf
else
sed -i "s#regexp: placeholder#regexp: $RSS_REGEXP#" /etc/transmission-rss.conf
fi
dockerize -template /etc/transmission-rss/transmission-rss.tmpl:/etc/transmission-rss.conf
echo "STARTING RSS PLUGIN"
transmission-rss
fi
echo "Starting RSS plugin"
cat /etc/transmission-rss.conf
transmission-rss

View File

@ -1,7 +1,7 @@
feeds:
- url: {{ .Env.RSS_URL }}
download_path: {{ .Env.TRANSMISSION_DOWNLOAD_DIR }}
regexp: {{ .Env.RSS_REGEXP }}
- url: placeholder
download_path: placeholder
regexp: placeholder
server:
host: transmission

View File

@ -1,3 +1,3 @@
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 8080
COPY nginx.conf /etc/nginx/nginx.conf

View File

@ -1,16 +0,0 @@
FROM balenalib/raspberry-pi:stretch
RUN apt-get update \
&& apt-get install -y \
ca-certificates \
nginx \
&& rm -rf /var/lib/apt/lists/*
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 8080
COPY nginx.conf /etc/nginx/nginx.conf
CMD ["nginx", "-g", "daemon off;"]

View File

@ -1,22 +0,0 @@
# This Dockerfile is for building ARM images on x64 machine like Docker Hub
FROM balenalib/raspberry-pi:stretch
RUN [ "cross-build-start" ]
RUN apt-get update \
&& apt-get install -y \
ca-certificates \
nginx \
&& rm -rf /var/lib/apt/lists/*
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 8080
COPY nginx.conf /etc/nginx/nginx.conf
CMD ["nginx", "-g", "daemon off;"]
RUN [ "cross-build-end" ]