chaosblade
/
Dockerfile
53 строки · 1.4 Кб
1FROM golang:1.20.5 AS builder
2LABEL maintainer="Changjun Xiao, Ming Cheng"
3
4ARG BLADE_VERSION=0.0.1
5ARG MUSL_VERSION=1.2.0
6
7# Using 163 mirror for Debian Strech
8RUN sed -i 's/deb.debian.org/mirrors.163.com/g' /etc/apt/sources.list
9RUN apt-get update && apt-get install unzip
10
11# # The image is used to build chaosblade for musl
12RUN wget http://www.musl-libc.org/releases/musl-${MUSL_VERSION}.tar.gz \
13&& tar -zxvf musl-${MUSL_VERSION}.tar.gz \
14&& rm musl-${MUSL_VERSION}.tar.gz \
15&& cd musl* \
16&& ./configure \
17&& make \
18&& make install \
19&& rm -rf musl*
20
21ENV CC /usr/local/musl/bin/musl-gcc
22ENV GOOS linux
23ENV BLADE_BUILD_PATH /tmp/chaosblade
24
25# Print go version
26RUN ${CC} --version
27RUN go version
28
29# Build blade
30COPY . ${BLADE_BUILD_PATH}
31WORKDIR ${BLADE_BUILD_PATH}
32RUN make clean && \
33go mod vendor && \
34env GO111MODULE=on GO15VENDOREXPERIMENT=1 make && \
35mv -f ${BLADE_BUILD_PATH}/target/chaosblade-${BLADE_VERSION} /usr/local/chaosblade
36
37# Stage2
38FROM alpine:3.13.7
39
40# @from https://mirrors.ustc.edu.cn/help/alpine.html
41RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
42
43# Install necessary package.
44RUN apk --no-cache add --update iproute2 bash util-linux curl \
45&& mkdir -p /lib/modules/$(uname -r)
46
47ENV CHAOSBLADE_HOME /usr/local/chaosblade
48COPY --from=builder ${CHAOSBLADE_HOME} ${CHAOSBLADE_HOME}
49
50WORKDIR ${CHAOSBLADE_HOME}
51ENV PATH ${CHAOSBLADE_HOME}:${PATH}
52
53CMD ["blade"]
54