From a6bcc84f57feb0393b26c7cb6e350ffa4020f58a Mon Sep 17 00:00:00 2001 From: lapnapra <34398784+lapnapra@users.noreply.github.com> Date: Tue, 26 Dec 2017 12:01:55 +0530 Subject: [PATCH] initial commit moved out from local --- .travis.yml | 22 ++++++++ Dockerfile_armhf | 39 +++++++++++++++ Dockerfile_x86_64 | 39 +++++++++++++++ makefile | 94 +++++++++++++++++++++++++++++++++++ root/etc/services.d/searx/run | 12 +++++ 5 files changed, 206 insertions(+) create mode 100644 .travis.yml create mode 100644 Dockerfile_armhf create mode 100644 Dockerfile_x86_64 create mode 100644 makefile create mode 100644 root/etc/services.d/searx/run diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..da1b1bf --- /dev/null +++ b/.travis.yml @@ -0,0 +1,22 @@ +sudo: required +language: bash +services: docker +env: + matrix: + - ARCH=x86_64 PUID=1000 PGID=1000 + - ARCH=armhf PUID=1001 PGID=1001 + global: + - secure: hG+l672xO3hrM1zPsGR9ztOU664JVjBCHtGrkYa+X36xFsrp8ZAUh6SXQORqTk17DcLl6bvxkl8Cgp67yEWe26W6gNNdUHzqQJ4sSEX/e9ikQTzfEugcHDHQxmAhneWZeVXZ7rpf6HObNI9nE0igb7Xd8+Z2jEj/VhCi16B44V7y5vEwyr9IDJUAlRtyA/Y0bBve6xOjZNRxO1nrz0lwIwdvwRjG5HDRgk8P9cukiKz958VgW4avAoag26BJPCPXRHMHCoxQTwRhv8K6EL3BJjO1rC0pCm15BLlTwNd2WO2Zc51Kk/vvJ1zSqJJdwUEnIIur1aNIcCSXDHgOkcUW+3FfV1N/F5LDVArQSZ+F6fCJDU7bsun9Ror0I/1DcGmNcXipdLx1J2OhII06YAltypkQ0Bh/PYUb0KhVFbEVt7D6hWaaq9vs/TlyMeJE69drM/NF9Hd11wsAaYDqjrB247yn09lJlEdpYIaqqrle/zKaqK/SkDzPsNxvOMepMkhbaSkFGycP60fLoHXj985jWeHHmSozT3IFgpKKGPK5lkD5l9I01v6P9rRakX7RTcUUHN4Dc0gMTytv4BQFBXJk6QtGpcXUKhGy1+XdUu46OMmQrLVrsWLtYLKBm87BmMJWGWKvPnWBCBA95itsSiKZ0X3dx7+/lTp5w/ZX1nDZp4k= + - secure: 0AlVZlewZstJocxLDNBh6AIsQukOZussohaAuirBGit6uWDf6ldp39MRPy4ApT8E4f+5j9fjLfeobBEFPGNBkbmEAslVuDoXNx3Yx6hAI+msOYUBMLcF3CEvo26WB7MHxHXupLIh9PppGb7VkYLmGWkJhulrXFoTWa8wUbLcYUNQRAvKVMUJo5IwWJnG8XrvOdFns2U9IV2hcGoE9dXFqWJW1RB+Wizm6i3tAbL/fstOb4pxyS7/tVfaekzknZEunhVNjDNP8O3XSNGRFdwcba3raOvs4aqye3Sze/IczWshGzWHehhMqEmMfCuIPdi6Pgo9eHGC9Yv1a2pk0PthWXboWBWSoMEM0dJqMdY6XhZcM2ur3QLNZV0xTWZCK9dyirpy1VuW4ysMpi6mPwVxwHbAOWRyguXMAMkcwjrCtfZHWXUvG8ggBYQfIe0jNQHwKs2BzFPQYM+Kp3PDPIjreHwIs2ioLVdcifoJ64Pnx1K2yqHkQCKs0a5/oFdCTsX9cuY97C+plteQacITwCiil/+doV8CcsX3rDXQGKk6gel/ith8rScX2Gl0gOiIdD3id9Z5qZzSoQ2wOoLIOYDYgh8UrvMtuGUKgjgtqVbpoeOc7r2t4ayayWclj+UARk5vgjvCveyOTufoNV/CN5PA0s8/sak9dwJXstI1Jaj21pc= +install: true +before_script: +- docker --version +- make --version +script: +- make ARCH=${ARCH} PUID=${PUID} PGID=${PGID} build test +after_success: +- docker login -u ${DOCKER_USER} -p ${DOCKER_PASS} +- make ARCH=${ARCH} push +after_script: +- docker logout +- make clean diff --git a/Dockerfile_armhf b/Dockerfile_armhf new file mode 100644 index 0000000..b42fe2d --- /dev/null +++ b/Dockerfile_armhf @@ -0,0 +1,39 @@ +ARG ARCH=frommakefile +ARG DOCKERSRC=frommakefile +ARG USERNAME=frommakefile +# +FROM ${USERNAME}/${DOCKERSRC}:${ARCH} +# +ARG PUID=991 +ARG PGID=991 +# +ENV BASE_URL=False IMAGE_PROXY=False +RUN set -xe \ + && apk add -Uu --no-cache --purge \ + libxml2 \ + libxslt \ + openssl \ + && apk add --no-cache -t build-dependencies \ + build-base \ + python-dev \ + libffi-dev \ + libxslt-dev \ + libxml2-dev \ + openssl-dev \ + tar \ + ca-certificates \ + && pip install --no-cache -r https://raw.githubusercontent.com/asciimoo/searx/master/requirements.txt \ + && mkdir /usr/local/searx \ + && cd /usr/local/searx \ + && curl -SL https://github.com/asciimoo/searx/archive/master.tar.gz | tar xz --strip 1 \ + && sed -i "s/127.0.0.1/0.0.0.0/g" searx/settings.yml \ + && apk del --purge build-dependencies \ + && rm -f /var/cache/apk/* /tmp/* +# +COPY root/ / +# +VOLUME /data +# +EXPOSE 8888 +# +ENTRYPOINT ["/init"] diff --git a/Dockerfile_x86_64 b/Dockerfile_x86_64 new file mode 100644 index 0000000..b42fe2d --- /dev/null +++ b/Dockerfile_x86_64 @@ -0,0 +1,39 @@ +ARG ARCH=frommakefile +ARG DOCKERSRC=frommakefile +ARG USERNAME=frommakefile +# +FROM ${USERNAME}/${DOCKERSRC}:${ARCH} +# +ARG PUID=991 +ARG PGID=991 +# +ENV BASE_URL=False IMAGE_PROXY=False +RUN set -xe \ + && apk add -Uu --no-cache --purge \ + libxml2 \ + libxslt \ + openssl \ + && apk add --no-cache -t build-dependencies \ + build-base \ + python-dev \ + libffi-dev \ + libxslt-dev \ + libxml2-dev \ + openssl-dev \ + tar \ + ca-certificates \ + && pip install --no-cache -r https://raw.githubusercontent.com/asciimoo/searx/master/requirements.txt \ + && mkdir /usr/local/searx \ + && cd /usr/local/searx \ + && curl -SL https://github.com/asciimoo/searx/archive/master.tar.gz | tar xz --strip 1 \ + && sed -i "s/127.0.0.1/0.0.0.0/g" searx/settings.yml \ + && apk del --purge build-dependencies \ + && rm -f /var/cache/apk/* /tmp/* +# +COPY root/ / +# +VOLUME /data +# +EXPOSE 8888 +# +ENTRYPOINT ["/init"] diff --git a/makefile b/makefile new file mode 100644 index 0000000..fc6694b --- /dev/null +++ b/makefile @@ -0,0 +1,94 @@ +# {{{ -- meta + +HOSTARCH := x86_64# on travis.ci +ARCH := $(shell uname -m | sed "s_armv7l_armhf_")# armhf/x86_64 auto-detect on build and run +OPSYS := alpine +SHCOMMAND := /bin/bash +SVCNAME := searx +USERNAME := woahbase + +PUID := $(shell id -u) +PGID := $(shell id -g)# gid 100(users) usually pre exists + +DOCKERSRC := $(OPSYS)-s6# +DOCKEREPO := $(OPSYS)-$(SVCNAME) +IMAGETAG := $(USERNAME)/$(DOCKEREPO):$(ARCH) + +# -- }}} + +# {{{ -- flags + +BUILDFLAGS := --rm --force-rm --compress -f $(CURDIR)/Dockerfile_$(ARCH) -t $(IMAGETAG) \ + --build-arg ARCH=$(ARCH) \ + --build-arg DOCKERSRC=$(DOCKERSRC) \ + --build-arg USERNAME=$(USERNAME) \ + --build-arg PUID=$(PUID) \ + --build-arg PGID=$(PGID) \ + --label org.label-schema.build-date=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ") \ + --label org.label-schema.name=$(DOCKEREPO) \ + --label org.label-schema.schema-version="1.0" \ + --label org.label-schema.vcs-ref=$(shell git rev-parse --short HEAD) \ + --label org.label-schema.vcs-url="https://github.com/$(USERNAME)/$(DOCKEREPO)" \ + --label org.label-schema.vendor=$(USERNAME) + +CACHEFLAGS := --no-cache=true --pull +MOUNTFLAGS := -v $(CURDIR)/data:/data +NAMEFLAGS := --name docker_$(SVCNAME) --hostname $(SVCNAME) +OTHERFLAGS := -v /etc/hosts:/etc/hosts:ro -v /etc/localtime:/etc/localtime:ro # -e TZ=Asia/Kolkata +PORTFLAGS := -p 8888:8888 +PROXYFLAGS := --build-arg http_proxy=$(http_proxy) --build-arg https_proxy=$(https_proxy) --build-arg no_proxy=$(no_proxy) + +RUNFLAGS := -c 512 -m 512m -e PGID=$(PGID) -e PUID=$(PUID) + +# -- }}} + +# {{{ -- docker targets + +all : run + +build : + echo "Building for $(ARCH) from $(HOSTARCH)"; + if [ "$(ARCH)" != "$(HOSTARCH)" ]; then make regbinfmt ; fi; + docker build $(BUILDFLAGS) $(CACHEFLAGS) $(PROXYFLAGS) . + +clean : + docker images | awk '(NR>1) && ($$2!~/none/) {print $$1":"$$2}' | grep "$(USERNAME)/$(DOCKEREPO)" | xargs -n1 docker rmi + +logs : + docker logs -f docker_$(SVCNAME) + +pull : + docker pull $(IMAGETAG) + +push : + docker push $(IMAGETAG) + +restart : + docker ps -a | grep 'docker_$(SVCNAME)' -q && docker restart docker_$(SVCNAME) || echo "Service not running."; + +rm : stop + docker rm -f docker_$(SVCNAME) + +run : + docker run --rm -it $(NAMEFLAGS) $(RUNFLAGS) $(PORTFLAGS) $(MOUNTFLAGS) $(OTHERFLAGS) $(IMAGETAG) + +rshell : + docker exec -u root -it docker_$(SVCNAME) $(SHCOMMAND) + +shell : + docker exec -it docker_$(SVCNAME) $(SHCOMMAND) + +stop : + docker stop -t 2 docker_$(SVCNAME) + +test : + docker run --rm -it $(NAMEFLAGS) $(RUNFLAGS) $(PORTFLAGS) $(MOUNTFLAGS) $(OTHERFLAGS) $(IMAGETAG) sh -ec 'sleep 15; python -V' + +# -- }}} + +# {{{ -- other targets + +regbinfmt : + docker run --rm --privileged multiarch/qemu-user-static:register --reset + +# -- }}} diff --git a/root/etc/services.d/searx/run b/root/etc/services.d/searx/run new file mode 100644 index 0000000..07c2bba --- /dev/null +++ b/root/etc/services.d/searx/run @@ -0,0 +1,12 @@ +#!/usr/bin/with-contenv bash + +[[ -f /data/settings.yml ]] && ( \ + cp /data/settings.yml /usr/local/searx/searx/settings.yml \ +) || ( \ + sed -i -e "s|base_url : False|base_url : ${BASE_URL}|g" \ + -e "s/image_proxy : False/image_proxy : ${IMAGE_PROXY}/g" \ + -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" \ + /usr/local/searx/searx/settings.yml \ +); + +exec s6-setuidgid $PUID:$PGID python /usr/local/searx/searx/webapp.py