- 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
119 lines
3.7 KiB
Docker
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" ]
|