diff --git a/.dockerignore b/.dockerignore index 2100edba..4b099a34 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,3 @@ -target_bins -target_configs target_injections tests docs diff --git a/Dockerfile b/Dockerfile index 4bc498d1..b9359583 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,30 @@ +ARG NAME=default ARG BASE_IMAGE="ubuntu:22.04" ### BASE IMAGE -FROM $BASE_IMAGE as base +FROM $BASE_IMAGE AS base ARG BASE_IMAGE +ARG NAME ENV DEBIAN_FRONTEND=noninteractive ENV LLVM_DIR=/usr/lib/llvm-11 ENV PATH="/scripts:${PATH}" ENV PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python +ENV USER=${NAME} # Copy dependencies lists into container. We copy them all and then do a mv because # we need to transform base_image into a windows compatible filename which we can't # do in a COPY command. +COPY ./wheezy_panda2.qcow2 / COPY ./dependencies/* /tmp COPY ./requirements.txt /tmp +COPY ./init-host.py / + +# Copy the rest of the files +COPY ./target_bins /target_bins +COPY ./target_configs /target_configs +COPY ./scripts /scripts +COPY ./tools/ /tools RUN mv /tmp/$(echo "$BASE_IMAGE" | sed 's/:/_/g')_build.txt /tmp/build_dep.txt && \ mv /tmp/$(echo "$BASE_IMAGE" | sed 's/:/_/g')_base.txt /tmp/base_dep.txt @@ -26,23 +37,26 @@ RUN [ -e /tmp/base_dep.txt ] && \ # Finally: Install panda debian package, you need a version that has the Dwarf2 Plugin RUN curl -LJO https://github.com/panda-re/panda/releases/download/v1.8.23/pandare_22.04.deb -RUN apt install -qq -y ./pandare_22.04.deb +RUN mv ./pandare_22.04.deb /tmp +RUN apt install -qq -y /tmp/pandare_22.04.deb RUN pip install -r /tmp/requirements.txt ### BUILD IMAGE - STAGE 2 FROM base AS builder ARG BASE_IMAGE +ARG NAME RUN [ -e /tmp/build_dep.txt ] && \ apt-get -qq update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends $(cat /tmp/build_dep.txt | grep -o '^[^#]*') && \ apt-get clean -#### Develop setup: panda built + pypanda installed (in develop mode) - Stage 3 -FROM builder as developer +RUN python3 init-host.py -COPY ./tools/ /tools -COPY ./scripts /scripts +#### Develop setup: panda built + pypanda installed (in develop mode) - Stage 3 +FROM builder AS developer +ARG BASE_IMAGE +ARG NAME # Essentially same as setup_container.sh RUN cd /tools/btrace && ./compile.sh @@ -53,5 +67,11 @@ RUN mkdir -p /tools/install RUN cmake -B"/tools/build" -H"/tools" -DCMAKE_INSTALL_PREFIX="/tools/install" RUN make --no-print-directory -j4 install -C "/tools/build/lavaTool" - RUN make --no-print-directory -j4 install -C "/tools/build/fbi" + +RUN useradd ${NAME} +RUN chown -R ${NAME}:${NAME} /tools/ +RUN chown -R ${NAME}:${NAME} /scripts/ +RUN chown -R ${NAME}:${NAME} /target_bins/ +RUN chown -R ${NAME}:${NAME} /target_configs/ +USER $NAME \ No newline at end of file