|
1 |
| -FROM public.ecr.aws/ubuntu/ubuntu:22.04 as config |
2 |
| -RUN apt-get update && apt-get install -y jsonnet |
| 1 | +# syntax=docker/dockerfile:1 |
| 2 | + |
| 3 | +ARG BASE=public.ecr.aws/ubuntu/ubuntu:22.04 |
| 4 | + |
| 5 | +# `~` is mangled as `.` |
| 6 | +ARG KEA_VERSION=2.3.6-1.rk1.jammy |
| 7 | + |
| 8 | +### |
| 9 | + |
| 10 | +FROM --platform=$BUILDPLATFORM public.ecr.aws/docker/library/rust:1.69-slim-bullseye as build-healthz |
| 11 | +RUN rustup target add aarch64-unknown-linux-gnu |
| 12 | +RUN apt-get update \ |
| 13 | + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ |
| 14 | + gcc-aarch64-linux-gnu |
| 15 | + |
| 16 | +WORKDIR /build/healthz |
| 17 | +COPY healthz/ ./ |
| 18 | + |
| 19 | +RUN --mount=type=cache,target=/usr/local/cargo/registry \ |
| 20 | + --mount=type=cache,target=/build/healthz/target \ |
| 21 | + CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \ |
| 22 | + cargo install --path . --root /app --locked --target=aarch64-unknown-linux-gnu |
| 23 | + |
| 24 | +### |
| 25 | + |
| 26 | +FROM --platform=$BUILDPLATFORM $BASE as build-stork |
| 27 | + |
| 28 | +RUN apt-get update \ |
| 29 | + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends git rake build-essential wget unzip |
| 30 | + |
| 31 | +WORKDIR /build |
| 32 | +RUN git clone --depth=1 https://gitlab.isc.org/isc-projects/stork -b v1.10.0 |
| 33 | + |
| 34 | +WORKDIR /build/stork/backend |
| 35 | +ENV GOPATH=/build/go |
| 36 | + |
| 37 | +RUN --mount=type=cache,dst=/build/stork/tools \ |
| 38 | + rake build:agent |
| 39 | + |
| 40 | +ENV GOOS=linux |
| 41 | +ENV GOARCH=arm64 |
| 42 | +ENV CGO_ENABLED=0 |
| 43 | + |
| 44 | +RUN --mount=type=cache,dst=/build/stork/tools \ |
| 45 | + ../tools/golang/go/bin/go install ./cmd/stork-agent |
| 46 | + |
| 47 | +### |
| 48 | + |
| 49 | +FROM --platform=$BUILDPLATFORM $BASE as config |
| 50 | +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y jsonnet |
3 | 51 | WORKDIR /app
|
4 | 52 | COPY kea-ctrl-agent.jsonnet /tmp/
|
5 | 53 | RUN jsonnet /tmp/kea-ctrl-agent.jsonnet > /app/kea-ctrl-agent.json
|
6 | 54 |
|
7 |
| -FROM public.ecr.aws/ubuntu/ubuntu:22.04 |
| 55 | +### |
| 56 | + |
| 57 | +FROM --platform=$BUILDPLATFORM $BASE as download |
| 58 | + |
| 59 | +RUN apt-get update \ |
| 60 | + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ |
| 61 | + curl \ |
| 62 | + ca-certificates |
| 63 | + |
| 64 | +ARG KEA_VERSION |
| 65 | + |
| 66 | +WORKDIR /download |
| 67 | +RUN curl -SsfL --remote-name-all \ |
| 68 | + https://github.com/hanazuki/isc-kea.deb/releases/download/debian%2F2.3.6-1_rk1_jammy/{kea-admin_${KEA_VERSION}_arm64.deb,kea-common_${KEA_VERSION}_arm64.deb,kea-ctrl-agent_${KEA_VERSION}_arm64.deb,kea-dhcp4-server_${KEA_VERSION}_arm64.deb} |
| 69 | + |
| 70 | +RUN sha384sum -c --strict <<EOF |
| 71 | +3da15d37c3edbaf670400c4221a7d116ebc306c4c573d3f3a6b8ace2ec1fb3782194b118c37a803b6696aa0340f45b17 kea-admin_2.3.6-1.rk1.jammy_arm64.deb |
| 72 | +8d4fadc507ce3a98199dceefd71f2da689cab40aa97753bdfb0f2facff0f5c734b968d86809c666dea5f01ec35eb04ac kea-common_2.3.6-1.rk1.jammy_arm64.deb |
| 73 | +a735a6e6102defd5fadb20900fb92bbd769368c5c211be3f0f0e9ccab29d2d6e69ad65dd46fed22a016ed0b5a2e74c90 kea-ctrl-agent_2.3.6-1.rk1.jammy_arm64.deb |
| 74 | +525e1ba2c96929ce32385d4c240a43ce7c4daf96023810d167b9204ba680517e8557896d40ab1d387de996fce7a84e68 kea-dhcp4-server_2.3.6-1.rk1.jammy_arm64.deb |
| 75 | +EOF |
| 76 | + |
| 77 | +### |
| 78 | + |
| 79 | +FROM $BASE |
8 | 80 |
|
9 | 81 | RUN mkdir -p /run/kea /app
|
10 | 82 | VOLUME /run/kea
|
11 | 83 |
|
12 |
| -RUN apt-get update && apt-get install -y \ |
| 84 | +ARG KEA_VERSION |
| 85 | + |
| 86 | +RUN --mount=type=bind,from=download,src=/download,dst=/download \ |
| 87 | + apt-get update \ |
| 88 | + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ |
13 | 89 | ca-certificates \
|
14 | 90 | dumb-init \
|
15 | 91 | ruby3.0 \
|
16 | 92 | iproute2 \
|
17 |
| - curl \ |
| 93 | + /download/*.deb \ |
18 | 94 | && apt-get clean && rm -rf /var/lib/apt/lists/*
|
19 | 95 |
|
20 |
| -ARG KEA_VERSION=2.0.2-1 |
21 |
| -RUN apt-get update && apt-get install -y --no-install-recommends \ |
22 |
| - kea-dhcp4-server=${KEA_VERSION} \ |
23 |
| - kea-admin=${KEA_VERSION} \ |
24 |
| - kea-ctrl-agent=${KEA_VERSION} \ |
25 |
| - && apt-get clean && rm -rf /var/lib/apt/lists/* |
26 |
| - |
27 |
| -RUN curl -Ssf -o /tmp/stork.deb 'https://sorah-pkg.s3.dualstack.ap-northeast-1.amazonaws.com/misc/isc-stork-agent_1.5.0.220824140136_arm64.deb' \ |
28 |
| - && ( echo '1e8b67f2afe4404ea3091cbef14e93a23186633a3d571f9cb141d162350d2fe6235d7679e89bed5c2235433f203d706d /tmp/stork.deb' | sha384sum -c --strict ) \ |
29 |
| - && dpkg -i /tmp/stork.deb && rm /tmp/stork.deb |
30 |
| -COPY healthz/target/aarch64-unknown-linux-gnu/release/healthz /app/healthzd |
31 |
| - |
| 96 | +COPY --from=build-healthz /app/bin/healthz /app/healthzd |
| 97 | +COPY --from=build-stork /build/go/bin/linux_arm64/stork-agent /app/stork-agent |
32 | 98 | COPY run.sh /app/run.sh
|
33 | 99 | COPY choose_dhcp_server_id.rb /app/choose_dhcp_server_id.rb
|
34 | 100 | COPY --from=config /app/kea-ctrl-agent.json /app/kea-ctrl-agent.json
|
35 | 101 |
|
36 |
| -RUN kea-ctrl-agent -t /app/kea-ctrl-agent.json |
| 102 | +RUN kea-ctrl-agent -t /app/kea-ctrl-agent.json |
37 | 103 |
|
38 | 104 | CMD /app/run.sh
|
0 commit comments