Files
Eric F d398a6ced2 Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
2026-06-08 00:38:27 -04:00

119 lines
3.7 KiB
Docker

# syntax=docker/dockerfile:1
FROM debian:12-slim AS builder
ARG REPO
ARG BRANCH
ARG EVEREST_CONFIG
ARG OCPP_CONFIG
ARG ADDITIONAL_CMAKE_PARAMETERS
ARG INSTALL_EV_CLI
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
git \
rsync \
wget \
cmake \
doxygen \
graphviz \
build-essential \
clang-format \
clang-tidy \
cppcheck \
libboost-all-dev \
maven \
openjdk-17-jdk \
nodejs \
npm \
libsqlite3-dev \
python3-pip \
libssl-dev \
libcurl4-openssl-dev \
libpcap-dev \
libcap-dev \
libsystemd-dev \
python3-venv \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace/everest
# to avoid caching
ARG BUILD_DATE=Unknown
# add github to known hosts
RUN mkdir -p -m 0600 ~/.ssh
RUN ssh-keyscan github.com >> ~/.ssh/known_hosts
RUN mkdir -p /workspace/everest/cpm_source_cache
ENV CPM_SOURCE_CACHE="/workspace/everest/cpm_source_cache"
ENV EVEREST_VENV=/workspace/everest/venv
RUN python3 -m venv ${EVEREST_VENV}
ENV PATH="${EVEREST_VENV}/bin:${PATH}"
RUN git clone https://github.com/EVerest/everest-cmake.git
RUN git clone https://github.com/EVerest/EVerest.git -b "${BRANCH}"
WORKDIR /workspace/everest/EVerest/applications/utils/ev-dev-tools
RUN if [ "${INSTALL_EV_CLI}" = "install_ev_cli" ] ; then python3 -m pip install . ; fi
WORKDIR /workspace/everest
RUN git clone https://github.com/EVerest/ext-switchev-iso15118.git
WORKDIR /workspace/everest/ext-switchev-iso15118/
RUN pip install -r requirements.txt
WORKDIR /workspace/everest
RUN rm -rf "/workspace/everest/$(basename "${REPO}" .git)"
RUN --mount=type=ssh git clone ${REPO} -b "${BRANCH}"
RUN --mount=type=ssh rm -rf "/workspace/everest/$(basename "${REPO}" .git)/build" && \
cd "/workspace/everest/$(basename "${REPO}" .git)" && \
git checkout "${BRANCH}" && \
mkdir "/workspace/everest/$(basename "${REPO}" .git)/build" && \
cd "/workspace/everest/$(basename "${REPO}" .git)/build" && \
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/everest ${ADDITIONAL_CMAKE_PARAMETERS} && \
make -j"$(nproc)" install
# Try to copy the OCPP 2.0.1 config directory to have the init_device_model_db.py script available for (re-)initialization of the device model
RUN cp -R "$(grep -m 1 "ocpp_SOURCE_DIR:STATIC=" "/workspace/everest/$(basename "${REPO}" .git)/build/CMakeCache.txt" | sed "s/ocpp_SOURCE_DIR:STATIC=//")/config/v201" /opt/everest/ocpp201config || echo "Could not copy OCPP 2.0.1 config directory"
RUN mkdir -p /opt/everest/config/user-config
COPY "${EVEREST_CONFIG}" /opt/everest/config/
COPY "${OCPP_CONFIG}" /opt/everest/config/
RUN if [ "${EVEREST_CONFIG}" != "config.yaml" ]; then mv /opt/everest/config/"${EVEREST_CONFIG}" /opt/everest/config/config.yaml ; fi
RUN if [ "${OCPP_CONFIG}" != "ocpp-config.json" ]; then mv /opt/everest/config/"${OCPP_CONFIG}" /opt/everest/config/ocpp-config.json ; fi
COPY logging.ini /opt/everest/config
# syntax=docker/dockerfile:1
FROM debian:12-slim
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
openjdk-17-jre \
nodejs \
npm \
curl \
python3-pip \
sqlite3 \
libboost-program-options1.74.0 \
libboost-log1.74.0 \
libboost-chrono1.74.0 \
libboost-system1.74.0 \
libssl3 \
libcurl4 \
libcap2 \
less \
libevent-dev \
python3-venv \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
ENV EVEREST_VENV=/workspace/everest/venv
RUN python3 -m venv ${EVEREST_VENV}
ENV PATH="${EVEREST_VENV}/bin:${PATH}"
COPY --from=builder /workspace/everest/venv /workspace/everest/venv
WORKDIR /opt/everest
COPY --from=builder /opt/everest ./
COPY ./scripts/initialize.sh /opt/everest
CMD [ "/opt/everest/bin/manager", "--conf", "/opt/everest/config/config.yaml" ]