diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..ce201efc09 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +from ubuntu:18.04 + +USER root + +RUN \ + apt-get update -q && \ + DEBIAN_FRONTEND="noninteractive" apt-get install -qy --fix-missing --no-install-recommends \ + ca-certificates \ + build-essential \ + #fakeroot \ + git \ + wget \ + curl \ + file \ + python2.7-dev \ + python3-dev \ + libssl-dev \ + libncurses5-dev \ + rsync \ + patch \ + cpio \ + gzip \ + unzip \ + bc \ + openssh-client \ + asciidoc \ + dblatex \ + graphviz \ + python-matplotlib && \ + rm -rf /var/lib/apt/lists/* && \ + useradd -ms /bin/bash build && \ + mkdir -p /build && \ + chown -R build:build /build + +USER build + +WORKDIR /build + +# container just waits, by default, actual builds can be done with `docker exec` +CMD /bin/bash -c 'for ((i = 0; ; i++)); do sleep 100; done' diff --git a/build-docker.sh b/build-docker.sh new file mode 100755 index 0000000000..1234eac8d9 --- /dev/null +++ b/build-docker.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +IMAGE_NAME=motioneyeos-builder +SHOW_USAGE=false + +while true +do + case "$1" in + -i|--image) if [ $# -lt 2 ]; then SHOW_USAGE=true; else IMAGE_NAME=$2; shift; fi; shift;; + --image) if [ $# -lt 2 ]; then SHOW_USAGE=true; else IMAGE_NAME=$2; shift; fi; shift;; + -?|-h|--help) SHOW_USAGE="true"; shift;; + *) break;; + esac +done + +if [ "${SHOW_USAGE}" = "true" ]; then + echo "Usage: $0 [-i|--image ]" + echo " builds a docker image based on Ubuntu 18.04 for building motioneyeos" + echo " default image name is 'motioneyeos-builder'" + exit 1 +fi + +docker build -t "${IMAGE_NAME}" . + diff --git a/docker-build.sh b/docker-build.sh new file mode 100755 index 0000000000..4fc1873a8b --- /dev/null +++ b/docker-build.sh @@ -0,0 +1,28 @@ +#!/bin/bash +IMAGE_NAME=motioneyeos-builder +CONTAINER_NAME="" +SHOW_USAGE=false + +while true +do + case "$1" in + -i|--image) if [ $# -lt 2 ]; then SHOW_USAGE=true; else IMAGE_NAME=$2; shift; fi; shift;; + -c|--container) if [ $# -lt 2 ]; then SHOW_USAGE=true; else CONTAINER_NAME=$2; shift; fi; shift;; + -?|-h|--help) SHOW_USAGE="true"; shift;; + *) break;; + esac +done + +if [ "${SHOW_USAGE}" = "true" ]; then + echo "Usage: $0 [-i|--image ] [-c|--container ] " + echo " -i | --image: Docker image to use (default image name is 'motioneyeos-builder')" + echo " -c | --container: Name for Docker container (defaults to image name with a randome integer appended" + echo " causes a docker image to build motioneyeos in a docker container" + exit 1 +fi + +if [ "${CONTAINER_NAME}" = "" ]; then + CONTAINER_NAME="${IMAGE_NAME}-${RANDOM}" +fi + +docker run --rm --name "${CONTAINER_NAME}" --mount type=bind,src=${PWD},target=/build -it "${IMAGE_NAME}" ./build.sh "$@"