# pymodbus simulator container for the Modbus integration suite. # # Pinned base + package version so the fixture surface is reproducible — # matches the version referenced in docs/drivers/Modbus-Test-Fixture.md. FROM python:3.12-slim-bookworm LABEL org.opencontainers.image.source="https://github.com/dohertj2/lmxopcua" \ org.opencontainers.image.description="pymodbus simulator for OtOpcUa Modbus driver integration tests" RUN pip install --no-cache-dir "pymodbus[simulator]==3.13.0" # Ship every profile in the image so one container can serve whichever # family a test run needs; the compose file picks which JSON is active via # the command override. WORKDIR /fixtures COPY profiles/ /fixtures/ EXPOSE 5020 # Default to the standard profile; docker-compose.yml overrides per service. # --http_port intentionally omitted; pymodbus 3.13's web UI binds on a # container-local default we don't publish, so it's not reachable from the # host and costs nothing. CMD ["pymodbus.simulator", \ "--modbus_server", "srv", \ "--modbus_device", "dev", \ "--json_file", "/fixtures/standard.json"]