mirror of
https://git.verdigado.com/NB-Public/simple-wkd.git
synced 2024-10-30 01:25:53 +01:00
Improve docker build speed
This commit is contained in:
parent
ed6ade53d8
commit
692b5e6cd1
3 changed files with 54 additions and 15 deletions
|
@ -1,6 +1,7 @@
|
||||||
*config.toml
|
*config.toml
|
||||||
Dockerfile
|
Dockerfile
|
||||||
README.md
|
README.md
|
||||||
|
.github/workflows/*
|
||||||
backend/data/*
|
backend/data/*
|
||||||
backend/logs/*
|
backend/logs/*
|
||||||
backend/target/*
|
backend/target/*
|
||||||
|
|
57
.github/workflows/docker.yml
vendored
57
.github/workflows/docker.yml
vendored
|
@ -5,27 +5,62 @@ on:
|
||||||
types: [published]
|
types: [published]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-push:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
platform:
|
include:
|
||||||
[linux/amd64, linux/arm64, linux/arm/v7, linux/arm/v6, linux/386]
|
- platform: linux/amd64
|
||||||
|
arch: x86_64
|
||||||
|
- platform: linux/arm64
|
||||||
|
arch: aarch64
|
||||||
|
- platform: linux/arm/v7
|
||||||
|
arch: armv7
|
||||||
|
- platform: linux/arm/v6
|
||||||
|
arch: arm
|
||||||
|
- platform: linux/386
|
||||||
|
arch: i686
|
||||||
steps:
|
steps:
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2
|
uses: docker/setup-qemu-action@v2
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v2
|
||||||
- name: Login to Docker Hub
|
- name: Build images
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
||||||
- name: Build and push
|
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
platforms: ${{ matrix.platform }}
|
platforms: ${{ matrix.platform }}
|
||||||
push: true
|
tags: delta1925/simple-wkd:${{ matrix.arch }}
|
||||||
tags: delta1925/simple-wkd:latest,delta1925/simple-wkd:${{ github.ref_name }}
|
outputs: type=docker,dest=/tmp/simple-wkd-${{ matrix.arch }}.tar
|
||||||
cache-from: type=gha
|
cache-from: type=gha
|
||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: simple-wkd-${{ matrix.arch }}
|
||||||
|
path: /tmp/simple-wkd-${{ matrix.arch }}.tar
|
||||||
|
|
||||||
|
push:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- tag: latest
|
||||||
|
- tag: ${{ github.ref_name }}
|
||||||
|
steps:
|
||||||
|
- name: Download artifacts
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
path: /tmp/simple-wkd
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
run: docker login -p ${{ secrets.DOCKERHUB_TOKEN }} -u ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
- name: Load images
|
||||||
|
run: find /tmp/simple-wkd -iname "simple-wkd-*.tar" -exec docker load --input {} \
|
||||||
|
- name: Create manifest
|
||||||
|
run: docker manifest create delta1925/simple-wkd:${{ matrix.tag }} simple-wkd:x86_64 simple-wkd:aarch64 simple-wkd:armv7 simple-wkd:arm simple-wkd:i686
|
||||||
|
- name: Push images
|
||||||
|
run: docker matifest push delta1925/simple-wkd:${{ matrix.tag }}
|
||||||
|
- name: Logout from Docker hub
|
||||||
|
run: docker logout
|
11
Dockerfile
11
Dockerfile
|
@ -2,26 +2,29 @@ ARG base="alpine:3.17"
|
||||||
|
|
||||||
FROM ${base} AS bin-builder
|
FROM ${base} AS bin-builder
|
||||||
|
|
||||||
|
# Disable static linking, see: https://users.rust-lang.org/t/sigsegv-with-program-linked-against-openssl-in-an-alpine-container/52172
|
||||||
|
# Enable cargo sparse index for faster update times, see: https://blog.rust-lang.org/inside-rust/2023/01/30/cargo-sparse-protocol.html
|
||||||
|
ENV RUSTFLAGS='-C target-feature=-crt-static' \
|
||||||
|
CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse
|
||||||
RUN apk add --no-cache cargo openssl-dev musl-dev
|
RUN apk add --no-cache cargo openssl-dev musl-dev
|
||||||
# This will build all dependencies and store them in docker's cache.
|
# This will build all dependencies and store them in docker's cache.
|
||||||
# This way, it won't be necessary to recompile everything everytime
|
# This way, it won't be necessary to recompile everything everytime
|
||||||
# It also disables static linking, see: https://users.rust-lang.org/t/sigsegv-with-program-linked-against-openssl-in-an-alpine-container/52172
|
|
||||||
COPY backend/Cargo.toml .
|
COPY backend/Cargo.toml .
|
||||||
COPY backend/Cargo.lock .
|
COPY backend/Cargo.lock .
|
||||||
RUN echo '[[bin]]' >> Cargo.toml && \
|
RUN echo '[[bin]]' >> Cargo.toml && \
|
||||||
echo 'name = "cache"' >> Cargo.toml && \
|
echo 'name = "cache"' >> Cargo.toml && \
|
||||||
echo 'path = "cache.rs"' >> Cargo.toml && \
|
echo 'path = "cache.rs"' >> Cargo.toml && \
|
||||||
echo 'fn main() {eprintln!("Caching crates...")}' > cache.rs && \
|
echo 'fn main() {eprintln!("Caching crates...")}' > cache.rs && \
|
||||||
RUSTFLAGS='-C target-feature=-crt-static' cargo build --release
|
cargo build --release
|
||||||
RUN rm cache.rs && \
|
RUN rm cache.rs && \
|
||||||
rm Cargo.toml
|
rm Cargo.toml
|
||||||
# Build wimple-wkd
|
# Build wimple-wkd
|
||||||
COPY backend/Cargo.toml .
|
COPY backend/Cargo.toml .
|
||||||
COPY backend/src src
|
COPY backend/src src
|
||||||
RUN RUSTFLAGS='-C target-feature=-crt-static' cargo build --release
|
RUN cargo build --release
|
||||||
|
|
||||||
|
|
||||||
FROM ${base} AS webpage-builder
|
FROM --platform=$BUILDPLATFORM ${base} AS webpage-builder
|
||||||
|
|
||||||
RUN apk add --no-cache npm
|
RUN apk add --no-cache npm
|
||||||
COPY website .
|
COPY website .
|
||||||
|
|
Loading…
Reference in a new issue