Use buildx for docker-compose-generator

This commit is contained in:
nicolas.dorier@gmail.com 2024-01-30 14:30:32 +09:00
parent 40f5ea5fe2
commit 8f81178fde
4 changed files with 12 additions and 115 deletions

View File

@ -12,59 +12,18 @@ jobs:
sudo ./test-install.sh sudo ./test-install.sh
# Define in CircleCi Project Variables: $DOCKERHUB_REPO, $DOCKERHUB_USER, $DOCKERHUB_PASS # Define in CircleCi Project Variables: $DOCKERHUB_REPO, $DOCKERHUB_USER, $DOCKERHUB_PASS
# Publish jobs require those variables # Publish jobs require those variables
amd64: docker:
machine: docker:
enabled: true - image: cimg/base:stable
steps: steps:
- checkout - setup_remote_docker
- checkout
- run: - run:
command: | command: |
cd docker-compose-generator docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS docker buildx create --use
sudo docker build --pull -t $DOCKERHUB_REPO:latest-amd64 -f linuxamd64.Dockerfile . DOCKER_BUILDX_OPTS="--platform linux/amd64,linux/arm64,linux/arm/v7 --push"
sudo docker push $DOCKERHUB_REPO:latest-amd64 docker buildx build $DOCKER_BUILDX_OPTS -t $DOCKERHUB_REPO:latest .
arm32v7:
machine:
enabled: true
steps:
- checkout
- run:
command: |
sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
#
cd docker-compose-generator
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
sudo docker build --pull -t $DOCKERHUB_REPO:latest-arm32v7 -f linuxarm32v7.Dockerfile .
sudo docker push $DOCKERHUB_REPO:latest-arm32v7
arm64v8:
machine:
enabled: true
steps:
- checkout
- run:
command: |
sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
#
cd docker-compose-generator
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
sudo docker build --pull -t $DOCKERHUB_REPO:latest-arm64v8 -f linuxarm64v8.Dockerfile .
sudo docker push $DOCKERHUB_REPO:latest-arm64v8
multiarch:
machine:
enabled: true
image: ubuntu-2004:202201-02
steps:
- run:
command: |
#
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
#
sudo docker manifest create --amend $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-amd64 $DOCKERHUB_REPO:latest-arm32v7 $DOCKERHUB_REPO:latest-arm64v8
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-amd64 --os linux --arch amd64
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-arm32v7 --os linux --arch arm --variant v7
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-arm64v8 --os linux --arch arm64 --variant v8
sudo docker manifest push $DOCKERHUB_REPO:latest -p
workflows: workflows:
version: 2 version: 2
@ -74,23 +33,7 @@ workflows:
filters: filters:
branches: branches:
only: master only: master
- amd64: - docker:
filters:
branches:
only: dcg-latest
- arm32v7:
filters:
branches:
only: dcg-latest
- arm64v8:
filters:
branches:
only: dcg-latest
- multiarch:
requires:
- amd64
- arm32v7
- arm64v8
filters: filters:
branches: branches:
only: dcg-latest only: dcg-latest

View File

@ -1,5 +1,5 @@
# #
FROM mcr.microsoft.com/dotnet/sdk:8.0.100-bookworm-slim AS builder FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0.101-bookworm-slim AS builder
WORKDIR /source WORKDIR /source
COPY src/docker-compose-generator.csproj docker-compose-generator.csproj COPY src/docker-compose-generator.csproj docker-compose-generator.csproj
# Cache some dependencies # Cache some dependencies
@ -8,7 +8,7 @@ COPY src/. .
RUN dotnet publish --output /app/ --configuration Release RUN dotnet publish --output /app/ --configuration Release
# #
FROM mcr.microsoft.com/dotnet/runtime:8.0.0-bookworm-slim FROM mcr.microsoft.com/dotnet/runtime:8.0.1-bookworm-slim
LABEL org.btcpayserver.image=docker-compose-generator LABEL org.btcpayserver.image=docker-compose-generator
WORKDIR /datadir WORKDIR /datadir
WORKDIR /app WORKDIR /app

View File

@ -1,23 +0,0 @@
# This is a manifest image, will pull the image with the same arch as the builder machine
FROM mcr.microsoft.com/dotnet/sdk:8.0.100-bookworm-slim AS builder
WORKDIR /source
COPY src/docker-compose-generator.csproj docker-compose-generator.csproj
# Cache some dependencies
RUN dotnet restore
COPY src/. .
RUN dotnet publish --output /app/ --configuration Release
# Force the builder machine to take make an arm runtime image. This is fine as long as the builder does not run any program
FROM mcr.microsoft.com/dotnet/runtime:8.0.0-bookworm-slim-arm32v7
LABEL org.btcpayserver.image=docker-compose-generator
WORKDIR /datadir
WORKDIR /app
ENV APP_DATADIR=/datadir
VOLUME /datadir
ENV INSIDE_CONTAINER=1
COPY --from=builder "/app" .
ENTRYPOINT ["dotnet", "docker-compose-generator.dll"]

View File

@ -1,23 +0,0 @@
# This is a manifest image, will pull the image with the same arch as the builder machine
FROM mcr.microsoft.com/dotnet/sdk:8.0.100-bookworm-slim AS builder
WORKDIR /source
COPY src/docker-compose-generator.csproj docker-compose-generator.csproj
# Cache some dependencies
RUN dotnet restore
COPY src/. .
RUN dotnet publish --output /app/ --configuration Release
# Force the builder machine to take make an arm runtime image. This is fine as long as the builder does not run any program
FROM mcr.microsoft.com/dotnet/runtime:8.0.0-bookworm-slim-arm64v8
LABEL org.btcpayserver.image=docker-compose-generator
WORKDIR /datadir
WORKDIR /app
ENV APP_DATADIR=/datadir
VOLUME /datadir
ENV INSIDE_CONTAINER=1
COPY --from=builder "/app" .
ENTRYPOINT ["dotnet", "docker-compose-generator.dll"]