Skip to content

Instantly share code, notes, and snippets.

@numb3r3
Created April 15, 2020 02:52
Show Gist options
  • Save numb3r3/5d3185b6aef19cb65c3a74e9d59547ac to your computer and use it in GitHub Desktop.
Save numb3r3/5d3185b6aef19cb65c3a74e9d59547ac to your computer and use it in GitHub Desktop.
Dockerfile for autoflip
# Copyright 2019 The MediaPipe Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
FROM ubuntu:latest
MAINTAINER <mediapipe@google.com>
WORKDIR /io
WORKDIR /mediapipe
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
curl \
git \
wget \
unzip \
python \
python-pip \
python3-pip \
# libopencv-core-dev \
# libopencv-highgui-dev \
# libopencv-imgproc-dev \
# libopencv-video-dev \
# libopencv-calib3d-dev \
# libopencv-features2d-dev \
cmake ffmpeg libavformat-dev libdc1394-22-dev libgtk2.0-dev \
libjpeg-dev libpng-dev libswscale-dev libtbb2 libtbb-dev \
libtiff-dev \
software-properties-common && \
add-apt-repository -y ppa:openjdk-r/ppa && \
apt-get update && apt-get install -y openjdk-8-jdk && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN pip install --upgrade setuptools
RUN pip install future
RUN pip3 install six
# Install bazel
ARG BAZEL_VERSION=2.0.0
RUN mkdir /bazel && \
wget --no-check-certificate -O /bazel/installer.sh "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/b\
azel-${BAZEL_VERSION}-installer-linux-x86_64.sh" && \
wget --no-check-certificate -O /bazel/LICENSE.txt "https://raw.githubusercontent.com/bazelbuild/bazel/master/LICENSE" && \
chmod +x /bazel/installer.sh && \
/bazel/installer.sh && \
rm -f /bazel/installer.sh
# Install bazel
RUN echo "Installing OpenCV from source"
# RUN apt update && apt install -y build-essential git
# RUN apt install -y cmake ffmpeg libavformat-dev libdc1394-22-dev libgtk2.0-dev \
# libjpeg-dev libpng-dev libswscale-dev libtbb2 libtbb-dev \
# libtiff-dev
ARG OPENCV_VERSION=3.4.0
RUN rm -rf /tmp/build_opencv \
&& mkdir /tmp/build_opencv \
&& cd /tmp/build_opencv \
&& wget -q https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.tar.gz && tar xvzf ${OPENCV_VERSION}.tar.gz && rm ${OPENCV_VERSION}.tar.gz \
&& wget -q https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.tar.gz && tar xvzf ${OPENCV_VERSION}.tar.gz && rm ${OPENCV_VERSION}.tar.gz
RUN cd /tmp/build_opencv && mkdir opencv-${OPENCV_VERSION}/release \
&& cd opencv-${OPENCV_VERSION}/release \
&& cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_opencv_ts=OFF \
-DOPENCV_EXTRA_MODULES_PATH=/tmp/build_opencv/opencv_contrib-${OPENCV_VERSION}/modules \
-DBUILD_opencv_aruco=OFF -DBUILD_opencv_bgsegm=OFF -DBUILD_opencv_bioinspired=OFF \
-DBUILD_opencv_ccalib=OFF -DBUILD_opencv_datasets=OFF -DBUILD_opencv_dnn=OFF \
-DBUILD_opencv_dnn_objdetect=OFF -DBUILD_opencv_dpm=OFF -DBUILD_opencv_face=OFF \
-DBUILD_opencv_fuzzy=OFF -DBUILD_opencv_hfs=OFF -DBUILD_opencv_img_hash=OFF \
-DBUILD_opencv_js=OFF -DBUILD_opencv_line_descriptor=OFF -DBUILD_opencv_phase_unwrapping=OFF \
-DBUILD_opencv_plot=OFF -DBUILD_opencv_quality=OFF -DBUILD_opencv_reg=OFF \
-DBUILD_opencv_rgbd=OFF -DBUILD_opencv_saliency=OFF -DBUILD_opencv_shape=OFF \
-DBUILD_opencv_structured_light=OFF -DBUILD_opencv_surface_matching=OFF \
-DBUILD_opencv_world=OFF -DBUILD_opencv_xobjdetect=OFF -DBUILD_opencv_xphoto=OFF \
&& make -j 2 && make install \
&& rm -rf /tmp/build_opencv \
&& echo "OpenCV has been built. You can find the header files and libraries in /usr/local/include/opencv2/ and /usr/local/lib" \
&& touch /etc/ld.so.conf.d/mp_opencv.conf \
&& bash -c "echo /usr/local/lib >> /etc/ld.so.conf.d/mp_opencv.conf" \
&& ldconfig -v
WORKDIR /mediapipe
COPY . /mediapipe/
RUN echo "Modifying MediaPipe opencv config"
RUN opencv_build_file=/mediapipe/third_party/opencv_linux.BUILD \
&& workspace_file=/mediapipe/WORKSPACE \
&& sed -i "s/lib\/x86_64-linux-gnu/lib/g" $opencv_build_file \
&& linux_opencv_config=$(grep -n 'linux_opencv' $workspace_file | awk -F ":" '{print $1}') \
&& path_line=$((linux_opencv_config + 2)) \
&& sed -i "$path_line d" $workspace_file \
&& sed -i "$path_line i\ path = \"/usr/local\"," $workspace_file \
&& echo "Done"
# How to decrease bazel memory usage? https://stackoverflow.com/q/34382360
RUN bazel build --ram_utilization_factor=80 --jobs=2 --sandbox_debug -c opt --define MEDIAPIPE_DISABLE_GPU=1 \
mediapipe/examples/desktop/autoflip:run_autoflip
ENV GLOG_logtostderr=1
ENTRYPOINT ["bazel-bin/mediapipe/examples/desktop/autoflip/run_autoflip", "--calculator_graph_config_file=mediapipe/examples/desktop/autoflip/autoflip_graph.pbtxt"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment