NilsIrl / dockerc

container image to single executable compiler
GNU General Public License v3.0
2.74k stars 40 forks source link

error: InvalidExe on execution when building from source #22

Open MathieuB1 opened 1 month ago

MathieuB1 commented 1 month ago

Hi everyone,

I tried the following in a Dockerfile:

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
ENV ARCH=x86_64

## Compiling Dockerc works but error on execution: InvalidExe

# Install dockerc from Git
RUN apt update && apt install -y wget xz-utils git autoconf automake libtool libzstd-dev make libapr1-dev gnulib python3 gcc build-essential libsystemd-dev libprotobuf-c-dev libcap-dev libseccomp-dev libyajl-dev go-md2man libgpgme-dev libassuan-dev libbtrfs-dev libdevmapper-dev pkg-config golang-github-opencontainers-selinux-dev libpkgconf3 && \
apt-get autoremove && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man /usr/share/info

# Install GO
RUN wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz && \
    rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz && rm -rf go1.22.4.linux-amd64.tar.gz

ENV PATH=$PATH:/usr/local/go/bin

# Install Zig
RUN wget https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz && \
tar -xf zig-linux-x86_64-0.13.0.tar.xz && \
cp zig-linux-x86_64-0.13.0/zig /usr/local/bin/ && \
cp -r zig-linux-x86_64-0.13.0/lib/* /usr/lib/ && rm -rf zig-linux-x86_64-0.13.0.tar.xz

WORKDIR /usr/src/

# Apply the patch
RUN mkdir -p dockerctmp && cd dockerctmp && \
    git clone --recursive https://github.com/NilsIrl/dockerc.git

RUN cd dockerctmp/dockerc/crun/ && zig build -Doptimize=ReleaseSafe -Dtarget=x86_64-linux-gnu && chmod +x zig-out/bin/dockerc && mv zig-out/bin/dockerc /usr/src/
docker build -t myapp .
docker run -it --rm  -v "${PWD}:/usr/app/" myapp bash

When running I have this output:

./dockerc --image docker-archive:/usr/app/dockercontainersavedimage.tar  -o test

Getting image source signatures Copying blob sha256:3ec3ded77c0ce89e931f92aed086b2a2c774a6fbd51617853decc8afa4e1087a Copying blob sha256:6ba3d9d08319a20618d2c6440b686e28e35fdc30146b6a50a66f964667561e25 Copying blob sha256:d269513b9138f5714c72faf415390f72e394bdfec5cc9c3aa81861d09885b886 Copying blob sha256:6ba3d9d08319a20618d2c6440b686e28e35fdc30146b6a50a66f964667561e25 Copying blob sha256:04b0d88aac0a2a5963294f298f04ee6da0c6e46d9eff327161655b4c2a9844a8 Copying config sha256:90fd206e4a0415ca5ee6416db3eb167da951ce349015b1a6f923afe6a07a3da6 Writing manifest to image destination error: InvalidExe

But with the https://github.com/NilsIrl/dockerc/releases/download/v0.2.1/dockerc its working fine. Can you please advise?