44 lines
1.7 KiB
Docker
44 lines
1.7 KiB
Docker
# ab_server container for the AB CIP integration suite.
|
|
#
|
|
# ab_server is a C program in libplctag/libplctag under src/tools/ab_server.
|
|
# We clone at a pinned commit, build just the ab_server target via CMake,
|
|
# and copy the resulting binary into a slim runtime stage so the published
|
|
# image stays small (~60MB vs ~350MB for the build stage).
|
|
|
|
# -------- stage 1: build ab_server from source --------
|
|
FROM debian:bookworm-slim AS build
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
git \
|
|
build-essential \
|
|
cmake \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Pinned tag matches the `ab_server` version AbServerFixture + CI treat as
|
|
# canonical. Bump deliberately alongside a driver-side change that needs
|
|
# something newer.
|
|
ARG LIBPLCTAG_TAG=release
|
|
RUN git clone --depth 1 --branch "${LIBPLCTAG_TAG}" https://github.com/libplctag/libplctag.git /src
|
|
|
|
WORKDIR /src
|
|
RUN cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
|
|
&& cmake --build build --target ab_server --parallel
|
|
|
|
# -------- stage 2: runtime --------
|
|
FROM debian:bookworm-slim
|
|
|
|
LABEL org.opencontainers.image.source="https://github.com/dohertj2/lmxopcua" \
|
|
org.opencontainers.image.description="libplctag ab_server for OtOpcUa AB CIP driver integration tests"
|
|
|
|
# libplctag's ab_server is statically linked against libc / libstdc++ on
|
|
# Debian bookworm; no runtime dependencies beyond what the slim image
|
|
# already has.
|
|
COPY --from=build /src/build/bin_dist/ab_server /usr/local/bin/ab_server
|
|
|
|
EXPOSE 44818
|
|
|
|
# docker-compose.yml overrides the command with per-family flags.
|
|
CMD ["ab_server", "--plc=ControlLogix", "--path=1,0", "--port=44818", \
|
|
"--tag=TestDINT:DINT[1]", "--tag=TestREAL:REAL[1]", "--tag=TestBOOL:BOOL[1]"]
|