commit 608fafc14c0c8fe1635494abb35f534878a74b6a Author: Cedric Verstraeten Date: Tue Jan 10 23:02:03 2023 +0100 init repo diff --git a/.github/workflows/amd64.yaml b/.github/workflows/amd64.yaml new file mode 100644 index 0000000..6e18788 --- /dev/null +++ b/.github/workflows/amd64.yaml @@ -0,0 +1,29 @@ +name: Docker amd64 + +on: + push: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Checkout + uses: actions/checkout@v3 + - name: Set up Docker Buildx + id: buildx + uses: crazy-max/ghaction-docker-buildx@v3 + with: + buildx-version: latest + qemu-version: latest + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} + - name: Run Buildx + run: docker buildx build --platform linux/amd64 -t kerberos/golang-ffmpeg-opencv:amd64-$(echo $GITHUB_SHA | cut -c1-7) --push . + - name: Create new and append to manifest + run: docker buildx imagetools create -t kerberos/golang-ffmpeg-opencv:$(echo $GITHUB_SHA | cut -c1-7) kerberos/golang-ffmpeg-opencv:amd64-$(echo $GITHUB_SHA | cut -c1-7) \ No newline at end of file diff --git a/.github/workflows/arm64.yaml b/.github/workflows/arm64.yaml new file mode 100644 index 0000000..d5681b1 --- /dev/null +++ b/.github/workflows/arm64.yaml @@ -0,0 +1,29 @@ +name: Docker arm64 + +on: + push: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Checkout + uses: actions/checkout@v3 + - name: Set up Docker Buildx + id: buildx + uses: crazy-max/ghaction-docker-buildx@v3 + with: + buildx-version: latest + qemu-version: latest + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} + - name: Run Buildx + run: docker buildx build --platform linux/arm64 -t kerberos/golang-ffmpeg-opencv:arm64-$(echo $GITHUB_SHA | cut -c1-7) --push . + - name: Append manifest + run: docker buildx imagetools create --append -t kerberos/golang-ffmpeg-opencv:$(echo $GITHUB_SHA | cut -c1-7) kerberos/golang-ffmpeg-opencv:arm64-$(echo $GITHUB_SHA | cut -c1-7) \ No newline at end of file diff --git a/.github/workflows/armv7.yaml b/.github/workflows/armv7.yaml new file mode 100644 index 0000000..5fae041 --- /dev/null +++ b/.github/workflows/armv7.yaml @@ -0,0 +1,29 @@ +name: Docker armv7 + +on: + push: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Checkout + uses: actions/checkout@v3 + - name: Set up Docker Buildx + id: buildx + uses: crazy-max/ghaction-docker-buildx@v3 + with: + buildx-version: latest + qemu-version: latest + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} + - name: Run Buildx + run: docker buildx build --platform linux/arm/v7 -t kerberos/golang-ffmpeg-opencv:armv7-$(echo $GITHUB_SHA | cut -c1-7) --push . + - name: Append manifest + run: docker buildx imagetools create --append -t kerberos/golang-ffmpeg-opencv:$(echo $GITHUB_SHA | cut -c1-7) kerberos/golang-ffmpeg-opencv:armv7-$(echo $GITHUB_SHA | cut -c1-7) \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..82d48c7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +FROM golang:1.18.0-stretch AS builder + +ARG gitlab_id +ARG gitlab_token + +WORKDIR /build + +# Compile FFMPEG + x264 +RUN apt-get update && apt-get upgrade -y && apt-get -y --no-install-recommends install git cmake wget dh-autoreconf autotools-dev autoconf automake gcc build-essential libtool make ca-certificates supervisor nasm zlib1g-dev tar libx264. unzip wget pkg-config libavresample-dev && \ + git clone https://github.com/FFmpeg/FFmpeg && \ + cd FFmpeg && git checkout remotes/origin/release/4.0 && \ + ./configure --prefix=/usr/local --target-os=linux --enable-nonfree --enable-libx264 --enable-gpl --enable-shared && \ + make -j8 && \ + make install && \ + cd .. && rm -rf FFmpeg +RUN wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.0.zip && \ + unzip opencv.zip && mv opencv-4.0.0 opencv && cd opencv && mkdir build && cd build && \ + cmake -D CMAKE_BUILD_TYPE=RELEASE \ + -D CMAKE_INSTALL_PREFIX=/usr/ \ + -D OPENCV_GENERATE_PKGCONFIG=YES \ + -D BUILD_TESTS=OFF \ + -D OPENCV_ENABLE_NONFREE=ON \ + #-D BUILD_opencv_dnn=OFF \ + -D BUILD_opencv_ml=OFF \ + -D BUILD_opencv_stitching=OFF \ + -D BUILD_opencv_ts=OFF \ + -D BUILD_opencv_java_bindings_generator=OFF \ + -D BUILD_opencv_python_bindings_generator=OFF \ + -D INSTALL_PYTHON_EXAMPLES=OFF \ + -D BUILD_EXAMPLES=OFF .. && make -j8 && make install && cd ../.. && rm -rf opencv* diff --git a/README.md b/README.md new file mode 100644 index 0000000..05f87f2 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Golang OpenCV FFmpeg + +This is a base image which we build our internal microservices on.