Files
hpnn-proto/lb/Dockerfile
T

34 lines
1.2 KiB
Docker

# Контекст сборки — корень репозитория: в образ едет и демон health-check.
FROM golang:1.23-alpine AS build
WORKDIR /src
COPY hc/go.mod ./
COPY hc/*.go ./
RUN CGO_ENABLED=0 go build -trimpath -o /out/hcd .
FROM debian:bookworm-slim
# openvswitch-switch — ovsdb-server и ovs-vswitchd; kmod — modprobe openvswitch;
# curl — обращения к API демона из lbctl; остальное — диагностика стенда.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
openvswitch-switch \
openvswitch-common \
iproute2 \
kmod \
tcpdump \
iputils-ping \
conntrack \
curl \
procps \
&& rm -rf /var/lib/apt/lists/*
COPY --from=build /out/hcd /usr/local/bin/hcd
COPY lb/topology.env lb/pipeline.sh lb/apply.sh lb/entrypoint.sh lb/lbctl.sh lb/hc-config.sh /opt/lb/
RUN chmod +x /opt/lb/*.sh && ln -s /opt/lb/lbctl.sh /usr/local/bin/lbctl
HEALTHCHECK --interval=15s --timeout=5s --start-period=20s --retries=3 \
CMD ovs-ofctl -O OpenFlow15 dump-flows br-lb table=11 >/dev/null 2>&1 \
&& curl -fsS --max-time 3 http://127.0.0.1:9111/status >/dev/null || exit 1
ENTRYPOINT ["/opt/lb/entrypoint.sh"]