initial import
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/qemu-*-static
 | 
				
			||||||
							
								
								
									
										108
									
								
								.gitlab-ci.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								.gitlab-ci.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,108 @@
 | 
				
			|||||||
 | 
					image: docker:stable
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					  - docker:dind
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					stages:
 | 
				
			||||||
 | 
					  - build
 | 
				
			||||||
 | 
					  - release
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					variables:
 | 
				
			||||||
 | 
					  QEMU_VERSION: v4.0.0-5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					before_script:
 | 
				
			||||||
 | 
					  - mkdir -p /root/.docker || true
 | 
				
			||||||
 | 
					  - echo '{"experimental":"enabled"}' > /root/.docker/config.json
 | 
				
			||||||
 | 
					  - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					build-amd64:
 | 
				
			||||||
 | 
					  stage: build
 | 
				
			||||||
 | 
					  script:
 | 
				
			||||||
 | 
					    - wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-x86_64-static -O qemu-x86_64-static
 | 
				
			||||||
 | 
					    - chmod 554 qemu-*-static
 | 
				
			||||||
 | 
					    - docker run --rm --privileged multiarch/qemu-user-static:register --reset
 | 
				
			||||||
 | 
					    - docker build --build-arg ARCH=amd64 -t ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-amd64 .
 | 
				
			||||||
 | 
					    - docker push ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-amd64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					build-arm32v6:
 | 
				
			||||||
 | 
					  stage: build
 | 
				
			||||||
 | 
					  script:
 | 
				
			||||||
 | 
					    - wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-arm-static -O qemu-arm-static
 | 
				
			||||||
 | 
					    - chmod 554 qemu-*-static
 | 
				
			||||||
 | 
					    - docker run --rm --privileged multiarch/qemu-user-static:register --reset
 | 
				
			||||||
 | 
					    - docker build --build-arg ARCH=arm32v6 -t ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v6 .
 | 
				
			||||||
 | 
					    - docker push ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					build-arm32v7:
 | 
				
			||||||
 | 
					  stage: build
 | 
				
			||||||
 | 
					  script:
 | 
				
			||||||
 | 
					    - wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-arm-static -O qemu-arm-static
 | 
				
			||||||
 | 
					    - chmod 554 qemu-*-static
 | 
				
			||||||
 | 
					    - docker run --rm --privileged multiarch/qemu-user-static:register --reset
 | 
				
			||||||
 | 
					    - docker build --build-arg ARCH=arm32v7 -t ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v7 .
 | 
				
			||||||
 | 
					    - docker push ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					build-arm64v8:
 | 
				
			||||||
 | 
					  stage: build
 | 
				
			||||||
 | 
					  script:
 | 
				
			||||||
 | 
					    - wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-aarch64-static -O qemu-aarch64-static
 | 
				
			||||||
 | 
					    - chmod 554 qemu-*-static
 | 
				
			||||||
 | 
					    - docker run --rm --privileged multiarch/qemu-user-static:register --reset
 | 
				
			||||||
 | 
					    - docker build --build-arg ARCH=arm64v8 -t ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm64v8 .
 | 
				
			||||||
 | 
					    - docker push ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm64v8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					release:
 | 
				
			||||||
 | 
					  stage: release
 | 
				
			||||||
 | 
					  script:
 | 
				
			||||||
 | 
					    - docker pull ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-amd64
 | 
				
			||||||
 | 
					    - docker tag ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-amd64 ${CI_REGISTRY_IMAGE}:latest-amd64
 | 
				
			||||||
 | 
					    - docker push ${CI_REGISTRY_IMAGE}:latest-amd64
 | 
				
			||||||
 | 
					    - docker pull ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v6
 | 
				
			||||||
 | 
					    - docker tag ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v6 ${CI_REGISTRY_IMAGE}:latest-arm32v6
 | 
				
			||||||
 | 
					    - docker push ${CI_REGISTRY_IMAGE}:latest-arm32v6
 | 
				
			||||||
 | 
					    - docker pull ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v7
 | 
				
			||||||
 | 
					    - docker tag ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v7 ${CI_REGISTRY_IMAGE}:latest-arm32v7
 | 
				
			||||||
 | 
					    - docker push ${CI_REGISTRY_IMAGE}:latest-arm32v7
 | 
				
			||||||
 | 
					    - docker pull ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm64v8
 | 
				
			||||||
 | 
					    - docker tag ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm64v8 ${CI_REGISTRY_IMAGE}:latest-arm64v8
 | 
				
			||||||
 | 
					    - docker push ${CI_REGISTRY_IMAGE}:latest-arm64v8
 | 
				
			||||||
 | 
					    - docker manifest create ${CI_REGISTRY_IMAGE}:latest ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-amd64 ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v6 ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v7 ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm64v8
 | 
				
			||||||
 | 
					    - docker manifest annotate --os linux --arch amd64 ${CI_REGISTRY_IMAGE}:latest ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-amd64
 | 
				
			||||||
 | 
					    - docker manifest annotate --os linux --arch arm --variant v6 ${CI_REGISTRY_IMAGE}:latest ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v6
 | 
				
			||||||
 | 
					    - docker manifest annotate --os linux --arch arm --variant v7 ${CI_REGISTRY_IMAGE}:latest ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v7
 | 
				
			||||||
 | 
					    - docker manifest annotate --os linux --arch arm64 --variant v8 ${CI_REGISTRY_IMAGE}:latest ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm64v8
 | 
				
			||||||
 | 
					    - docker manifest push ${CI_REGISTRY_IMAGE}:latest
 | 
				
			||||||
 | 
					  only:
 | 
				
			||||||
 | 
					    - master
 | 
				
			||||||
 | 
					    - tags
 | 
				
			||||||
 | 
					    - schedules
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dockerhub:
 | 
				
			||||||
 | 
					  stage: release
 | 
				
			||||||
 | 
					  before_script:
 | 
				
			||||||
 | 
					    - mkdir -p /root/.docker || true
 | 
				
			||||||
 | 
					    - echo '{"experimental":"enabled"}' > /root/.docker/config.json
 | 
				
			||||||
 | 
					    - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
 | 
				
			||||||
 | 
					    - docker login -u ${DOCKERHUB_USER} -p ${DOCKERHUB_PASSWORD} ${DOCKERHUB_REGISTRY}
 | 
				
			||||||
 | 
					  script:
 | 
				
			||||||
 | 
					    - docker pull ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-amd64
 | 
				
			||||||
 | 
					    - docker tag ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-amd64 ${DOCKERHUB_IMAGE}:latest-amd64
 | 
				
			||||||
 | 
					    - docker push ${DOCKERHUB_IMAGE}:latest-amd64
 | 
				
			||||||
 | 
					    - docker pull ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v6
 | 
				
			||||||
 | 
					    - docker tag ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v6 ${DOCKERHUB_IMAGE}:latest-arm32v6
 | 
				
			||||||
 | 
					    - docker push ${DOCKERHUB_IMAGE}:latest-arm32v6
 | 
				
			||||||
 | 
					    - docker pull ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v7
 | 
				
			||||||
 | 
					    - docker tag ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm32v7 ${DOCKERHUB_IMAGE}:latest-arm32v7
 | 
				
			||||||
 | 
					    - docker push ${DOCKERHUB_IMAGE}:latest-arm32v7
 | 
				
			||||||
 | 
					    - docker pull ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm64v8
 | 
				
			||||||
 | 
					    - docker tag ${CI_REGISTRY_IMAGE}:${CI_PIPELINE_ID}-arm64v8 ${DOCKERHUB_IMAGE}:latest-arm64v8
 | 
				
			||||||
 | 
					    - docker push ${DOCKERHUB_IMAGE}:latest-arm64v8
 | 
				
			||||||
 | 
					    - docker manifest create ${DOCKERHUB_IMAGE}:latest ${DOCKERHUB_IMAGE}:latest-amd64 ${DOCKERHUB_IMAGE}:latest-arm32v6 ${DOCKERHUB_IMAGE}:latest-arm32v7 ${DOCKERHUB_IMAGE}:latest-arm64v8
 | 
				
			||||||
 | 
					    - docker manifest annotate --os linux --arch amd64 ${DOCKERHUB_IMAGE}:latest ${DOCKERHUB_IMAGE}:latest-amd64
 | 
				
			||||||
 | 
					    - docker manifest annotate --os linux --arch arm --variant v6 ${DOCKERHUB_IMAGE}:latest ${DOCKERHUB_IMAGE}:latest-arm32v6
 | 
				
			||||||
 | 
					    - docker manifest annotate --os linux --arch arm --variant v7 ${DOCKERHUB_IMAGE}:latest ${DOCKERHUB_IMAGE}:latest-arm32v7
 | 
				
			||||||
 | 
					    - docker manifest annotate --os linux --arch arm64 --variant v8 ${DOCKERHUB_IMAGE}:latest ${DOCKERHUB_IMAGE}:latest-arm64v8
 | 
				
			||||||
 | 
					    - docker manifest push ${DOCKERHUB_IMAGE}:latest
 | 
				
			||||||
 | 
					  only:
 | 
				
			||||||
 | 
					    - master
 | 
				
			||||||
 | 
					    - tags
 | 
				
			||||||
 | 
					    - schedules
 | 
				
			||||||
							
								
								
									
										53
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					# Base image
 | 
				
			||||||
 | 
					ARG ARCH=amd64
 | 
				
			||||||
 | 
					FROM $ARCH/debian:buster-slim
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Prepare multi arch build
 | 
				
			||||||
 | 
					COPY qemu-* /usr/bin/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Maintainer
 | 
				
			||||||
 | 
					MAINTAINER Florian Schwab <me@ydkn.io>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# install packages
 | 
				
			||||||
 | 
					RUN apt-get update \
 | 
				
			||||||
 | 
					  && apt-get install -y \
 | 
				
			||||||
 | 
					    sudo \
 | 
				
			||||||
 | 
					    cups \
 | 
				
			||||||
 | 
					    cups-bsd \
 | 
				
			||||||
 | 
					    cups-filters \
 | 
				
			||||||
 | 
					    foomatic-db-compressed-ppds \
 | 
				
			||||||
 | 
					    printer-driver-all \
 | 
				
			||||||
 | 
					    openprinting-ppds \
 | 
				
			||||||
 | 
					    hpijs-ppds \
 | 
				
			||||||
 | 
					    hp-ppd \
 | 
				
			||||||
 | 
					    hplip \
 | 
				
			||||||
 | 
					  && apt-get clean \
 | 
				
			||||||
 | 
					  && rm -rf /var/lib/apt/lists/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# add print user
 | 
				
			||||||
 | 
					RUN adduser --home /home/print --shell /bin/bash --gecos "print" --disabled-password print \
 | 
				
			||||||
 | 
					  && adduser print sudo \
 | 
				
			||||||
 | 
					  && adduser print lp \
 | 
				
			||||||
 | 
					  && adduser print lpadmin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# disable sudo password checking
 | 
				
			||||||
 | 
					RUN echo 'print ALL=(ALL:ALL) ALL' >> /etc/sudoers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# enable access to CUPS
 | 
				
			||||||
 | 
					RUN /usr/sbin/cupsd \
 | 
				
			||||||
 | 
					  && while [ ! -f /var/run/cups/cupsd.pid ]; do sleep 1; done \
 | 
				
			||||||
 | 
					  && cupsctl --remote-admin --remote-any --share-printers \
 | 
				
			||||||
 | 
					  && kill $(cat /var/run/cups/cupsd.pid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# cleanup
 | 
				
			||||||
 | 
					RUN rm -f /usr/bin/qemu-*-static /app/qemu-*-static
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# volumes
 | 
				
			||||||
 | 
					VOLUME ["/etc/cups/printers.conf"]
 | 
				
			||||||
 | 
					VOLUME ["/etc/cups/ppd"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ports
 | 
				
			||||||
 | 
					EXPOSE 631
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# default command
 | 
				
			||||||
 | 
					CMD ["/usr/sbin/cupsd", "-f"]
 | 
				
			||||||
							
								
								
									
										21
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					MIT License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019 Florian Schwab
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The above copyright notice and this permission notice shall be included in all
 | 
				
			||||||
 | 
					copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
				
			||||||
 | 
					SOFTWARE.
 | 
				
			||||||
							
								
								
									
										8
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					# CUPS Docker Image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Start the container
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					touch $(pwd)/printers.conf
 | 
				
			||||||
 | 
					docker run -d --restart always -v $(pwd)/printers.conf:/etc/cups/printers.conf -v $(pwd)/ppd:/etc/cups/ppd ydkn/cups:latest
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
							
								
								
									
										3
									
								
								qemu-dummy-static
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								qemu-dummy-static
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "Dummy QEMU wrapper to allow builds without specifing an architecture."
 | 
				
			||||||
		Reference in New Issue
	
	Block a user