diff --git a/.github/workflows/docker-v2.yml b/.github/workflows/docker-v2.yml index 0e87c30a02..e625f38324 100644 --- a/.github/workflows/docker-v2.yml +++ b/.github/workflows/docker-v2.yml @@ -83,13 +83,11 @@ jobs: name: Build libcorerust runs-on: ${{ matrix.os }} container: - image: radixdlt/build-layers:rust-v1 + image: radixdlt/build-layers:rust options: --user root steps: - name: Checkout uses: RDXWorks-actions/checkout@main - - name: Setup rust toolchain - uses: RDXWorks-actions/rust-toolchain@1.77 - name: Setup rust cache uses: RDXWorks-actions/rust-cache@master with: @@ -97,7 +95,7 @@ jobs: - name: Build working-directory: core-rust run: | - cargo build --profile=release + /root/.cargo/bin/cargo build --profile=release - name: Upload artifacts uses: RDXWorks-actions/upload-artifact-v4@main with: diff --git a/Dockerfile b/Dockerfile index 74606dda52..cf84a8e245 100644 --- a/Dockerfile +++ b/Dockerfile @@ -319,4 +319,4 @@ COPY docker/build_scripts/config_radixdlt.sh /opt/radixdlt/config_radixdlt.sh # See https://docs.docker.com/engine/reference/builder/#entrypoint ENTRYPOINT ["/opt/radixdlt/config_radixdlt.sh"] -CMD ["/opt/radixdlt/bin/core"] \ No newline at end of file +CMD ["/opt/radixdlt/bin/core"] diff --git a/Dockerfile.v2 b/Dockerfile.v2 new file mode 100644 index 0000000000..396f878f0f --- /dev/null +++ b/Dockerfile.v2 @@ -0,0 +1,50 @@ +FROM radixdlt/build-layers:java AS java-container + +WORKDIR /radixdlt + +# Copy the relevant files at the repo root +COPY \ + build.gradle \ + gradlew \ + gradlew.bat \ + settings.gradle \ + sonar-project.properties \ + gradle.properties \ + licence-header.txt \ + /radixdlt/ +COPY ./gradle /radixdlt/gradle +COPY ./common /radixdlt/common +COPY ./core /radixdlt/core +COPY ./core-rust-bridge /radixdlt/core-rust-bridge +COPY ./cli-tools /radixdlt/cli-tools +COPY ./shell /radixdlt/shell +COPY ./keygen /radixdlt/keygen +# Need .git for tag versions - but this can probably be removed soon +COPY ./.git/* /radixdlt/.git/ + +RUN SKIP_NATIVE_RUST_BUILD=TRUE ./gradlew clean build -x test -Pci=true -PrustBinaryBuildType=release + +RUN cd core/build/distributions && \ + unzip -j *.zip && \ + mkdir -p /artifacts && \ + cp *.jar /artifacts && \ + cp core /artifacts + +FROM radixdlt/build-layers:rust AS rust-container + +WORKDIR /app + +COPY core-rust/ /app + +RUN mkdir -p /artifacts && \ + /root/.cargo/bin/cargo build --profile=release && \ + cp target/release/libcorerust.so /artifacts/libcorerust.so + +FROM radixdlt/build-layers:app AS main + +# Copy in the application artifacts +COPY --from=java-container /artifacts/*.jar /opt/radixdlt/lib/ +COPY --from=java-container /artifacts/core /opt/radixdlt/bin/core +COPY --from=rust-container /artifacts/libcorerust.so /usr/lib/jni/libcorerust.so + +RUN chmod +x /opt/radixdlt/bin/core diff --git a/docker/dockerfiles/app.dockerfile b/docker/dockerfiles/app.dockerfile index 7d966dcb59..5486a3eff0 100644 --- a/docker/dockerfiles/app.dockerfile +++ b/docker/dockerfiles/app.dockerfile @@ -85,14 +85,6 @@ ENV RADIXDLT_HOME=/home/radixdlt \ RADIXDLT_NETWORK_ID=240 \ RADIXDLT_NODE_KEY_CREATE_IF_MISSING=false -# Copy in the application artifacts -# The artifacts directory on the host must be populated with the required files. -COPY artifacts/*.jar /opt/radixdlt/lib/ -COPY artifacts/core /opt/radixdlt/bin/core -COPY artifacts/libcorerust.so /usr/lib/jni/libcorerust.so - -RUN chmod +x /opt/radixdlt/bin/core - # Create configuration automatically when starting COPY docker/build_scripts/config_radixdlt.sh /opt/radixdlt/config_radixdlt.sh diff --git a/docker/dockerfiles/java.dockerfile b/docker/dockerfiles/java.dockerfile index 74e9b4ddd1..46bc3e9cc8 100644 --- a/docker/dockerfiles/java.dockerfile +++ b/docker/dockerfiles/java.dockerfile @@ -16,7 +16,7 @@ LABEL org.opencontainers.image.source="https://github.com/radixdlt/babylon-node" LABEL org.opencontainers.image.authors="devops@radixdlt.com" LABEL org.opencontainers.image.description="Java + Debian 12 (OpenJDK)" -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND=noninteractive CMD ["/bin/bash"] @@ -63,26 +63,6 @@ RUN apt-get update \ ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8" RUN mkdir -p /radixdlt -# Copy the relevant files at the repo root -# I wish we could just avoid pulling in the rust here, but https://github.com/moby/moby/issues/15771 -COPY \ - build.gradle \ - gradlew \ - gradlew.bat \ - settings.gradle \ - sonar-project.properties \ - gradle.properties \ - licence-header.txt \ - /radixdlt/ -COPY ./gradle /radixdlt/gradle -COPY ./common /radixdlt/common -COPY ./core /radixdlt/core -COPY ./core-rust-bridge /radixdlt/core-rust-bridge -COPY ./cli-tools /radixdlt/cli-tools -COPY ./shell /radixdlt/shell -COPY ./keygen /radixdlt/keygen -# Need .git for tag versions - but this can probably be removed soon -COPY ./.git/* /radixdlt/.git/ WORKDIR /radixdlt