From ef86de39227e0c97ea27de4955cdc6589355e266 Mon Sep 17 00:00:00 2001 From: Michel Promonet Date: Fri, 3 May 2024 11:11:46 +0200 Subject: [PATCH] update docker build --- .circleci/config.yml | 8 +++++--- .cirrus.yml | 12 ++++++++---- .github/workflows/docker.yml | 11 +++++++---- Dockerfile | 5 +++-- Dockerfile.arm64 | 27 --------------------------- Dockerfile.rpi | 24 ------------------------ 6 files changed, 23 insertions(+), 64 deletions(-) delete mode 100644 Dockerfile.arm64 delete mode 100644 Dockerfile.rpi diff --git a/.circleci/config.yml b/.circleci/config.yml index 58914c0..6030589 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -144,7 +144,8 @@ jobs: command: | export TAG=${CIRCLE_TAG:-latest} docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS - docker build --pull -t $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${TAG}-arm32v7 -f Dockerfile.rpi . + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker build --pull -t $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${TAG}-arm32v7 --build-arg IMAGE=balenalib/raspberry-pi2 . docker push $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${TAG}-arm32v7 # ------------------------------------- @@ -161,7 +162,8 @@ jobs: command: | export TAG=${CIRCLE_TAG:-latest} docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS - docker build --build-arg ARCH=armv6l --pull -t $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${TAG}-arm32v6 -f Dockerfile.rpi . + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker build --build-arg ARCH=armv6l --pull -t $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${TAG}-arm32v6 --build-arg IMAGE=balenalib/raspberry-pi . docker push $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${TAG}-arm32v6 # ------------------------------------- @@ -179,7 +181,7 @@ jobs: export TAG=${CIRCLE_TAG:-latest} docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker build --pull -t $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${TAG}-arm64 -f Dockerfile.arm64 . + docker build --pull -t $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${TAG}-arm64 --build-arg IMAGE=arm64v8/ubuntu:24.04 . docker push $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${TAG}-arm64 # ------------------------------------- diff --git a/.cirrus.yml b/.cirrus.yml index 4425ef0..4e1dc98 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,13 +1,17 @@ linux_docker_builder: - script: docker build -t $CIRRUS_REPO_FULL_NAME:cirrus-linux . -f Dockerfile + script: docker build -t $CIRRUS_REPO_FULL_NAME:cirrus-linux . linuxarmv7_docker_builder: - script: docker build -t $CIRRUS_REPO_FULL_NAME:cirrus-rpi . -f Dockerfile.rpi + script: | + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker build -t $CIRRUS_REPO_FULL_NAME:cirrus-armv7 . --build-arg IMAGE=balenalib/raspberry-pi2 linuxarmv6_docker_builder: - script: docker build -t $CIRRUS_REPO_FULL_NAME:cirrus-armv6 . -f Dockerfile.rpi --build-arg ARCH=armv6l + script: | + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker build -t $CIRRUS_REPO_FULL_NAME:cirrus-armv6 . --build-arg IMAGE=balenalib/raspberry-pi linuxarm64_docker_builder: script: | docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker build -t $CIRRUS_REPO_FULL_NAME:cirrus-arm64 . -f Dockerfile.arm64 + docker build -t $CIRRUS_REPO_FULL_NAME:cirrus-arm64 . --build-arg IMAGE=arm64v8/ubuntu:24.04 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 8c2d6de..7da5585 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -8,13 +8,16 @@ jobs: matrix: include: - os: ubuntu-latest - dockerfile: Dockerfile.arm64 + image: arm64v8/ubuntu:24.04 label: arm64 - os: ubuntu-latest - dockerfile: Dockerfile.rpi + image: balenalib/raspberry-pi label: armv6l - os: ubuntu-latest - dockerfile: Dockerfile + image: balenalib/raspberry-pi2 + label: armv7 + - os: ubuntu-latest + image: ubuntu:24.04 label: amd64 runs-on: ${{ matrix.os }} @@ -25,4 +28,4 @@ jobs: - name: Build an image from Dockerfile run: | docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker build -t docker.io/${{ github.repository }}:${{ matrix.label }} -f ${{ matrix.dockerfile }} . + docker build -t docker.io/${{ github.repository }}:${{ matrix.label }} --build-arg IMAGE=${{ matrix.image }} . diff --git a/Dockerfile b/Dockerfile index 6a6736e..3f47f14 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ -FROM ubuntu:24.04 as builder +ARG IMAGE=ubuntu:24.04 +FROM $IMAGE as builder LABEL maintainer michel.promonet@free.fr WORKDIR /v4l2rtspserver @@ -8,7 +9,7 @@ COPY . . RUN cmake . && make install && apt-get clean && rm -rf /var/lib/apt/lists/ -FROM ubuntu:24.04 +FROM $IMAGE WORKDIR /usr/local/share/v4l2rtspserver RUN apt-get update \ diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 deleted file mode 100644 index bcd1352..0000000 --- a/Dockerfile.arm64 +++ /dev/null @@ -1,27 +0,0 @@ -FROM ubuntu:24.04 as builder -LABEL maintainer michel.promonet@free.fr -WORKDIR /v4l2rtspserver - -ARG ARCH=arm64 - -RUN apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates xz-utils cmake make patch pkg-config git wget gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libasound2-dev && apt-get clean && rm -rf /var/lib/apt/lists/ - -COPY . . - -RUN cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY . \ - && make install - - -FROM arm64v8/ubuntu:24.04 - -WORKDIR /usr/local/share/v4l2rtspserver - -RUN apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates libasound2-dev libssl-dev && apt-get clean && rm -rf /var/lib/apt/lists/ - -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/share/v4l2rtspserver/ /usr/local/share/v4l2rtspserver/ - -ENTRYPOINT [ "/usr/local/bin/v4l2rtspserver" ] -CMD [ "-S" ] diff --git a/Dockerfile.rpi b/Dockerfile.rpi deleted file mode 100644 index d790a9e..0000000 --- a/Dockerfile.rpi +++ /dev/null @@ -1,24 +0,0 @@ -FROM debian as builder -LABEL maintainer michel.promonet@free.fr -WORKDIR /v4l2rtspserver -COPY . /v4l2rtspserver - -ARG ARCH=armv7l - -RUN apt-get update \ - && apt-get install -y --no-install-recommends ca-certificates xz-utils cmake make patch pkg-config git wget \ - && git clone --depth 1 https://github.com/raspberrypi/tools.git /rpi_tools \ - && export PATH=/rpi_tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH \ - && cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY . \ - && make install \ - && apt-get clean && rm -rf /var/lib/apt/lists/ - - -FROM balenalib/raspberry-pi - -WORKDIR /usr/local/share/v4l2rtspserver -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/share/v4l2rtspserver/ /usr/local/share/v4l2rtspserver/ - -ENTRYPOINT [ "/usr/local/bin/v4l2rtspserver" ] -CMD [ "-S" ]