diff --git a/builds/misc/images-release.yaml b/builds/misc/images-release.yaml index 18ed03a685f..7b7eb3b70e7 100644 --- a/builds/misc/images-release.yaml +++ b/builds/misc/images-release.yaml @@ -2,7 +2,17 @@ trigger: none pr: none name: $(version) -jobs: + +stages: +# This stage builds Rocks DB and adds the files to staging directory +################################################################################ +- template: templates/build-rocksdb.yaml +################################################################################ + +- stage: BuildReleaseImages + dependsOn: [ BuildRocksDB ] + + jobs: ################################################################################ - job: linux_dotnet_projects ################################################################################ @@ -13,7 +23,7 @@ jobs: pool: name: $(pool.linux.name) demands: - - ImageOverride -equals agent-aziotedge-ubuntu-18.04-docker + - ImageOverride -equals agent-aziotedge-ubuntu-20.04-docker steps: # Both docker logins needed for if we need to test this job. In this case images should go to edgebuilds. - task: Docker@2 @@ -289,30 +299,51 @@ jobs: } ] signConfigType: inlineSignParams + + - task: DownloadPipelineArtifact@2 + inputs: + artifact: 'librocksdb' + # place in '$(Pipeline.Workspace)/librocksdb' + path: '$(Pipeline.Workspace)/librocksdb' + + - task: CopyFiles@2 + displayName: Copy rocksdb libs + inputs: + sourceFolder: '$(Pipeline.Workspace)/librocksdb' + contents: '**' + targetFolder: '$(Build.BinariesDirectory)/publish/librocksdb' + - template: templates/image-linux.yaml parameters: imageName: azureiotedge-agent name: "Edge Agent" project: Microsoft.Azure.Devices.Edge.Agent.Service version: $(version) + buildx_flag: 'true' + use_rocksdb: true - template: templates/image-linux.yaml parameters: imageName: azureiotedge-hub name: "Edge Hub" project: Microsoft.Azure.Devices.Edge.Hub.Service version: $(version) + buildx_flag: 'true' + use_rocksdb: true - template: templates/image-linux.yaml parameters: imageName: azureiotedge-simulated-temperature-sensor name: "Temperature Sensor" project: SimulatedTemperatureSensor version: $(version) + buildx_flag: 'true' - template: templates/image-linux.yaml parameters: imageName: azureiotedge-diagnostics name: "Diagnostics Module" project: IotedgeDiagnosticsDotnet version: $(version) + buildx_flag: 'true' + - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 displayName: 'SBOM Generation Task' inputs: @@ -322,6 +353,7 @@ jobs: inputs: PathtoPublish: '$(Build.BinariesDirectory)/publish' ArtifactName: 'publish-linux' + ################################################################################ - job: windows ################################################################################ diff --git a/builds/misc/templates/build-images.yaml b/builds/misc/templates/build-images.yaml index e8dfc3874b1..8abae2e7454 100644 --- a/builds/misc/templates/build-images.yaml +++ b/builds/misc/templates/build-images.yaml @@ -26,6 +26,14 @@ stages: fi displayName: Check changes in runtime sources name: check_files + +# This stage builds Rocks DB and adds the files to staging directory +################################################################################ + - template: build-rocksdb.yaml + parameters: + dependency: [ CheckBuildImages ] +################################################################################ + ################################################################################ - stage: BuildExecutables ################################################################################ @@ -39,8 +47,8 @@ stages: pool: name: $(pool.linux.name) demands: - - ImageOverride -equals agent-aziotedge-ubuntu-18.04-docker - dependsOn: CheckBuildImages + - ImageOverride -equals agent-aziotedge-ubuntu-20.04-docker + dependsOn: BuildRocksDB jobs: - job: linux_dotnet_projects displayName: LinuxDotnet @@ -57,7 +65,20 @@ stages: - script: scripts/linux/createArtifactInfo.sh --output-folder '$(Build.BinariesDirectory)/publish' --build-number $(Build.BuildNumber) displayName: 'Create Artifact Info File' - + + - task: DownloadPipelineArtifact@2 + inputs: + artifact: 'librocksdb' + # place in '$(Pipeline.Workspace)/librocksdb' + path: '$(Pipeline.Workspace)/librocksdb' + + - task: CopyFiles@2 + displayName: Copy rocksdb libs + inputs: + sourceFolder: '$(Pipeline.Workspace)/librocksdb' + contents: '**' + targetFolder: '$(Build.BinariesDirectory)/publish/librocksdb' + - task: PublishBuildArtifacts@1 displayName: 'Publish Artifacts' inputs: @@ -70,6 +91,8 @@ stages: name: Edge Agent imageName: azureiotedge-agent project: Microsoft.Azure.Devices.Edge.Agent.Service + buildx_flag: 'true' + use_rocksdb: true # Edge Hub - template: image-linux.yaml @@ -77,6 +100,8 @@ stages: name: Edge Hub imageName: azureiotedge-hub project: Microsoft.Azure.Devices.Edge.Hub.Service + buildx_flag: 'true' + use_rocksdb: true # Simulated Temperature Sensor - template: image-linux.yaml @@ -84,6 +109,7 @@ stages: name: Temperature Sensor imageName: azureiotedge-simulated-temperature-sensor project: SimulatedTemperatureSensor + buildx_flag: 'true' # Dotnet Diagnostics Module - template: image-linux.yaml @@ -91,6 +117,7 @@ stages: name: Diagnostics imageName: azureiotedge-diagnostics project: IotedgeDiagnosticsDotnet + buildx_flag: 'true' # Temperature Filter - template: image-linux.yaml @@ -98,6 +125,7 @@ stages: name: Temperature Filter imageName: azureiotedge-temperature-filter project: TemperatureFilter + buildx_flag: 'true' # Load Gen - template: image-linux.yaml @@ -105,6 +133,7 @@ stages: name: Load Gen imageName: azureiotedge-load-gen project: load-gen + buildx_flag: 'true' # Test Analyzer - template: image-linux.yaml @@ -112,6 +141,8 @@ stages: name: Test Analyzer imageName: azureiotedge-analyzer project: TestAnalyzer + buildx_flag: 'true' + use_rocksdb: true # Functions Sample - Not supported on linux arm64 - template: image-linux.yaml @@ -126,6 +157,7 @@ stages: name: Direct Method Sender imageName: azureiotedge-direct-method-sender project: DirectMethodSender + buildx_flag: 'true' # Direct Method Receiver - template: image-linux.yaml @@ -133,6 +165,7 @@ stages: name: Direct Method Receiver imageName: azureiotedge-direct-method-receiver project: DirectMethodReceiver + buildx_flag: 'true' # Metrics Validator - template: image-linux.yaml @@ -140,6 +173,7 @@ stages: name: Metrics Validator imageName: azureiotedge-metrics-validator project: MetricsValidator + buildx_flag: 'true' # Number Logger - template: image-linux.yaml @@ -147,6 +181,7 @@ stages: name: Number Logger imageName: azureiotedge-number-logger project: NumberLogger + buildx_flag: 'true' # Module Restarter - template: image-linux.yaml @@ -154,6 +189,7 @@ stages: name: Module Restarter imageName: azureiotedge-module-restarter project: ModuleRestarter + buildx_flag: 'true' # Twin Tester - template: image-linux.yaml @@ -161,6 +197,8 @@ stages: name: TwinTester imageName: azureiotedge-twin-tester project: TwinTester + buildx_flag: 'true' + use_rocksdb: true # Relayer - template: image-linux.yaml @@ -168,6 +206,7 @@ stages: name: Relayer imageName: azureiotedge-relayer project: Relayer + buildx_flag: 'true' # Network Controller - template: image-linux.yaml @@ -175,13 +214,17 @@ stages: name: Network Controller imageName: azureiotedge-network-controller project: NetworkController - + buildx_flag: 'true' + use_rocksdb: true + # TestResultCoordinator - template: image-linux.yaml parameters: name: TestResultCoordinator imageName: azureiotedge-test-result-coordinator project: TestResultCoordinator + buildx_flag: 'true' + use_rocksdb: true # Metrics Collector (test-only) - template: image-linux.yaml @@ -189,6 +232,7 @@ stages: name: Metrics Collector (test-only) imageName: azureiotedge-test-metrics-collector project: MetricsCollector + buildx_flag: 'true' # Deployment Tester - template: image-linux.yaml @@ -196,6 +240,7 @@ stages: name: DeploymentTester imageName: azureiotedge-deployment-tester project: DeploymentTester + buildx_flag: 'true' # EdgeHub Restart Tester - template: image-linux.yaml @@ -203,6 +248,7 @@ stages: name: EdgeHubRestartTester imageName: azureiotedge-edgehub-restart-tester project: EdgeHubRestartTester + buildx_flag: 'true' # Cloud To Device Message Tester - template: image-linux.yaml @@ -210,6 +256,7 @@ stages: name: Cloud To Device Message Tester imageName: azureiotedge-c2dmessage-tester project: CloudToDeviceMessageTester + buildx_flag: 'true' # Metrics Collector (customer-facing) - template: image-linux.yaml @@ -217,6 +264,7 @@ stages: name: Metrics Collector (customer-facing) imageName: azureiotedge-metrics-collector project: Microsoft.Azure.Devices.Edge.Azure.Monitor + buildx_flag: 'true' ################################################################################ # linux - Rust amd64 @@ -477,4 +525,4 @@ stages: - script: scripts/linux/buildManifest.sh -r $(registry.address) -v $(Build.BuildNumber) -t $(System.DefaultWorkingDirectory)/edgelet/iotedge-proxy/docker/manifest.yaml.template -n microsoft --tags "$(tags)" displayName: 'Publish azureiotedge-proxy Manifest' - script: scripts/linux/buildManifest.sh -r $(registry.address) -v $(Build.BuildNumber) -t $(System.DefaultWorkingDirectory)/edge-modules/azure-monitor/docker/manifest.yaml.template -n microsoft --tags "$(tags)" - displayName: 'Publish azureiotedge-metrics-collector Manifest' \ No newline at end of file + displayName: 'Publish azureiotedge-metrics-collector Manifest' diff --git a/builds/misc/templates/build-rocksdb.yaml b/builds/misc/templates/build-rocksdb.yaml new file mode 100644 index 00000000000..a0354241417 --- /dev/null +++ b/builds/misc/templates/build-rocksdb.yaml @@ -0,0 +1,40 @@ +parameters: + dependency: [] +stages: +################################################################################ + - stage: BuildRocksDB +################################################################################ + displayName: Build RocksDB + pool: + name: $(pool.linux.name) + demands: + - ImageOverride -equals agent-aziotedge-ubuntu-20.04-docker + dependsOn: ${{parameters.dependency}} + jobs: + - job: BuildRocksDB + displayName: Build Rocks DB + strategy: + matrix: + RocksDbAmd64: + arch: amd64 + postfix: amd64 + RocksDbArm32: + arch: arm32v7 + postfix: armhf + RocksDbArm64: + arch: arm64v8 + postfix: arm64 + steps: + - bash: | + build_image=rocksdb-build:master-$(postfix)-$(Build.BuildNumber) && \ + mkdir -p $(Build.ArtifactStagingDirectory)/librocksdb && \ + cd $(System.DefaultWorkingDirectory)/edge-util/docker/linux/$(arch) && \ + docker build --tag ${build_image} . && \ + docker run --rm -v $(Build.ArtifactStagingDirectory)/librocksdb:/artifacts \ + ${build_image} cp /publish/librocksdb.so.$(postfix) /artifacts + displayName: Build and copy out rocksdb lib + - task: PublishBuildArtifacts@1 + displayName: 'Publish Artifacts to VSTS' + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)/librocksdb' + artifactName: 'librocksdb' diff --git a/builds/misc/templates/image-linux.yaml b/builds/misc/templates/image-linux.yaml index 04935c78131..e8faa0ecc2c 100644 --- a/builds/misc/templates/image-linux.yaml +++ b/builds/misc/templates/image-linux.yaml @@ -4,8 +4,20 @@ parameters: namespace: 'microsoft' project: '' version: '' + buildx_flag: '' + use_rocksdb: false + bin_dir: '' steps: + + - task: CopyFiles@2 + displayName: Copy RocksDB libs into project + condition: and(succeeded(), eq('${{ parameters.use_rocksdb }}', 'true')) + inputs: + sourceFolder: '$(Build.BinariesDirectory)/publish/librocksdb' + contents: '**' + targetFolder: '$(Build.BinariesDirectory)/publish/${{ parameters.project }}/librocksdb' + - task: Bash@3 displayName: Build Image - ${{ parameters.name }} - amd64 inputs: @@ -15,10 +27,10 @@ steps: displayName: Build Image - ${{ parameters.name }} - arm32 inputs: filePath: scripts/linux/buildImage.sh - arguments: -r "$(registry.address)" -i "${{ parameters.imageName }}" -n "${{ parameters.namespace }}" -P "${{ parameters.project }}" -v "${{ parameters.version }}" --target-arch armv7l + arguments: -r "$(registry.address)" -i "${{ parameters.imageName }}" -n "${{ parameters.namespace }}" -P "${{ parameters.project }}" -v "${{ parameters.version }}" --target-arch armv7l --buildx_flag ${{ parameters.buildx_flag }} - task: Bash@3 displayName: Build Image - ${{ parameters.name }} - arm64 condition: and(ne('${{ parameters.name }}', 'Functions Sample'), succeeded()) inputs: filePath: scripts/linux/buildImage.sh - arguments: -r "$(registry.address)" -i "${{ parameters.imageName }}" -n "${{ parameters.namespace }}" -P "${{ parameters.project }}" -v "${{ parameters.version }}" --target-arch aarch64 + arguments: -r "$(registry.address)" -i "${{ parameters.imageName }}" -n "${{ parameters.namespace }}" -P "${{ parameters.project }}" -v "${{ parameters.version }}" --target-arch aarch64 --buildx_flag ${{ parameters.buildx_flag }} diff --git a/edge-agent/docker/linux/amd64/Dockerfile b/edge-agent/docker/linux/amd64/Dockerfile index ff016795628..85e539d79d5 100644 --- a/edge-agent/docker/linux/amd64/Dockerfile +++ b/edge-agent/docker/linux/amd64/Dockerfile @@ -1,7 +1,4 @@ -ARG base_tag=3.1.19-alpine3.14 -# base dockerfile is located at \edge-util\docker\linux\amd64 -FROM azureiotedge/azureiotedge-runtime-base:1.2-linux-amd64 as builder - +ARG base_tag=3.1.19-alpine3.14 FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} ARG EXE_DIR=. @@ -16,7 +13,7 @@ ENV EDGEAGENTUSER_ID ${EDGEAGENTUSER_ID:-1000} RUN adduser -Ds /bin/sh -u ${EDGEAGENTUSER_ID} edgeagentuser # Install RocksDB -COPY --from=builder publish/* /usr/local/lib/ +COPY $EXE_DIR/librocksdb/librocksdb.so.amd64 /usr/local/lib/librocksdb.so WORKDIR /app diff --git a/edge-agent/docker/linux/arm32v7/Dockerfile b/edge-agent/docker/linux/arm32v7/Dockerfile index ed6b19d5139..44531086374 100644 --- a/edge-agent/docker/linux/arm32v7/Dockerfile +++ b/edge-agent/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,18 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-agent-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && \ + apt-get install -y libsnappy1v5 && \ + ln -s /lib/arm-linux-gnueabihf/libdl.so.2 /usr/lib/arm-linux-gnueabihf/libdl.so && \ + ln -s /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc.so && \ + rm -rf /var/lib/apt/lists/* + +# create a user to allow agent to optionally run as non-root +ARG EDGEAGENTUSER_ID +ENV EDGEAGENTUSER_ID ${EDGEAGENTUSER_ID:-1000} +RUN useradd -ms /bin/bash -u ${EDGEAGENTUSER_ID} edgeagentuser + +COPY $EXE_DIR/librocksdb/librocksdb.so.armhf /usr/lib/librocksdb.so ARG EXE_DIR=. diff --git a/edge-agent/docker/linux/arm32v7/base/Dockerfile b/edge-agent/docker/linux/arm32v7/base/Dockerfile deleted file mode 100644 index 41cdbd870a4..00000000000 --- a/edge-agent/docker/linux/arm32v7/base/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -ARG base_tag=3.1.19-bionic-arm32v7 -FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} - -RUN apt-get update && \ - apt-get install -y libsnappy1v5 && \ - ln -s /lib/arm-linux-gnueabihf/libdl.so.2 /usr/lib/arm-linux-gnueabihf/libdl.so && \ - ln -s /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc.so && \ - rm -rf /var/lib/apt/lists/* - -# create a user to allow agent to optionally run as non-root -ARG EDGEAGENTUSER_ID -ENV EDGEAGENTUSER_ID ${EDGEAGENTUSER_ID:-1000} -RUN useradd -ms /bin/bash -u ${EDGEAGENTUSER_ID} edgeagentuser - -COPY librocksdb.so /usr/lib/ diff --git a/edge-agent/docker/linux/arm64v8/Dockerfile b/edge-agent/docker/linux/arm64v8/Dockerfile index 3ac56276bf1..d4d3f9ccb2a 100644 --- a/edge-agent/docker/linux/arm64v8/Dockerfile +++ b/edge-agent/docker/linux/arm64v8/Dockerfile @@ -1,6 +1,23 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 +ARG base_tag=3.1.19-bionic-arm64v8 -FROM azureiotedge/azureiotedge-agent-base:${base_tag} +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN mkdir -p ../publish + +RUN apt-get update && \ + apt-get install -y libsnappy1v5 && \ + rm -rf /var/lib/apt/lists/* && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so.2 && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc.so.6 + +# create a user to allow agent to optionally run as non-root +ARG EDGEAGENTUSER_ID +ENV EDGEAGENTUSER_ID ${EDGEAGENTUSER_ID:-1000} +RUN useradd -ms /bin/bash -u ${EDGEAGENTUSER_ID} edgeagentuser + +COPY $EXE_DIR/librocksdb/librocksdb.so.arm64 /usr/lib/librocksdb.so ARG EXE_DIR=. diff --git a/edge-agent/docker/linux/arm64v8/base/Dockerfile b/edge-agent/docker/linux/arm64v8/base/Dockerfile deleted file mode 100644 index 001da821d8c..00000000000 --- a/edge-agent/docker/linux/arm64v8/base/Dockerfile +++ /dev/null @@ -1,21 +0,0 @@ -ARG base_tag=3.1.19-bionic-arm64v8 -ARG num_procs=4 - -FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} - -RUN mkdir -p ../publish - -RUN apt-get update && \ - apt-get install -y libsnappy1v5 && \ - rm -rf /var/lib/apt/lists/* && \ - ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so.2 && \ - ln -s /lib/aarch64-linux-gnu/libdl.so.2 /lib/aarch64-linux-gnu/libdl.so && \ - ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so && \ - ln -s /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc.so.6 - -# create a user to allow agent to optionally run as non-root -ARG EDGEAGENTUSER_ID -ENV EDGEAGENTUSER_ID ${EDGEAGENTUSER_ID:-1000} -RUN useradd -ms /bin/bash -u ${EDGEAGENTUSER_ID} edgeagentuser - -COPY librocksdb.so /usr/lib diff --git a/edge-hub/docker/linux/amd64/Dockerfile b/edge-hub/docker/linux/amd64/Dockerfile index 17a71166b05..f4651c9e067 100644 --- a/edge-hub/docker/linux/amd64/Dockerfile +++ b/edge-hub/docker/linux/amd64/Dockerfile @@ -1,6 +1,4 @@ ARG base_tag=3.1.19-alpine3.14 -# base dockerfile is located at \edge-util\docker\linux\amd64 -FROM azureiotedge/azureiotedge-runtime-base:1.2-linux-amd64 as builder FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} @@ -11,7 +9,8 @@ RUN apk update && \ apk add --no-cache snappy libcap # Add an unprivileged user account for running Edge Hub -ARG EDGEHUBUSER_ID=1000 +ARG EDGEHUBUSER_ID +ENV EDGEHUBUSER_ID ${EDGEHUBUSER_ID:-1000} RUN adduser -Ds /bin/sh -u ${EDGEHUBUSER_ID} edgehubuser # Add the CAP_NET_BIND_SERVICE capability to the dotnet binary because @@ -19,7 +18,7 @@ RUN adduser -Ds /bin/sh -u ${EDGEHUBUSER_ID} edgehubuser RUN setcap 'cap_net_bind_service=+ep' /usr/share/dotnet/dotnet # Install RocksDB -COPY --from=builder publish/* /usr/local/lib/ +COPY $EXE_DIR/librocksdb/librocksdb.so.amd64 /usr/local/lib/librocksdb.so WORKDIR /app diff --git a/edge-hub/docker/linux/arm32v7/Dockerfile b/edge-hub/docker/linux/arm32v7/Dockerfile index c5a22a5e8c8..75a36531c89 100644 --- a/edge-hub/docker/linux/arm32v7/Dockerfile +++ b/edge-hub/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,21 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-hub-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +# Add an unprivileged user account for running Edge Hub +ARG EDGEHUBUSER_ID=1000 +RUN useradd -ms /bin/bash -u ${EDGEHUBUSER_ID} edgehubuser +ENV EdgeHubUser=edgehubuser + +RUN apt-get update && apt-get install -y libcap2-bin libsnappy1v5 && \ + ln -s /lib/arm-linux-gnueabihf/libdl.so.2 /usr/lib/arm-linux-gnueabihf/libdl.so && \ + ln -s /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc.so && \ + rm -rf /var/lib/apt/lists/* + +COPY $EXE_DIR/librocksdb/librocksdb.so.armhf /usr/lib/librocksdb.so + +# add the CAP_NET_BIND_SERVICE capability to the dotnet binary because +# we are starting edge hub as a non-root user +RUN setcap 'cap_net_bind_service=+ep' /usr/share/dotnet/dotnet ARG EXE_DIR=. diff --git a/edge-hub/docker/linux/arm32v7/base/Dockerfile b/edge-hub/docker/linux/arm32v7/base/Dockerfile deleted file mode 100644 index f89d0ccbbee..00000000000 --- a/edge-hub/docker/linux/arm32v7/base/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -ARG base_tag=3.1.19-bionic-arm32v7 -FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} - -# Add an unprivileged user account for running Edge Hub -ARG EDGEHUBUSER_ID=1000 -RUN useradd -ms /bin/bash -u ${EDGEHUBUSER_ID} edgehubuser -ENV EdgeHubUser=edgehubuser - -RUN apt-get update && apt-get install -y libcap2-bin libsnappy1v5 && \ - ln -s /lib/arm-linux-gnueabihf/libdl.so.2 /usr/lib/arm-linux-gnueabihf/libdl.so && \ - ln -s /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc.so && \ - rm -rf /var/lib/apt/lists/* - -COPY librocksdb.so /usr/lib/ - -# add the CAP_NET_BIND_SERVICE capability to the dotnet binary because -# we are starting edge hub as a non-root user -RUN setcap 'cap_net_bind_service=+ep' /usr/share/dotnet/dotnet diff --git a/edge-hub/docker/linux/arm64v8/Dockerfile b/edge-hub/docker/linux/arm64v8/Dockerfile index 074ff6db3e5..fe16004b767 100644 --- a/edge-hub/docker/linux/arm64v8/Dockerfile +++ b/edge-hub/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,25 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-hub-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +# Add an unprivileged user account for running Edge Hub +ARG EDGEHUBUSER_ID=1000 +RUN useradd -ms /bin/bash -u ${EDGEHUBUSER_ID} edgehubuser +ENV EdgeHubUser=edgehubuser + +RUN apt-get update && \ + apt-get install -y libsnappy1v5 && \ + apt-get install -y libcap2-bin && \ + rm -rf /var/lib/apt/lists/* && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so.2 && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc.so.6 + +COPY $EXE_DIR/librocksdb/librocksdb.so.arm64 /usr/lib/librocksdb.so + +# add the CAP_NET_BIND_SERVICE capability to the dotnet binary because +# we are starting edge hub as a non-root user +RUN setcap 'cap_net_bind_service=+ep' /usr/share/dotnet/dotnet ARG EXE_DIR=. diff --git a/edge-hub/docker/linux/arm64v8/base/Dockerfile b/edge-hub/docker/linux/arm64v8/base/Dockerfile deleted file mode 100644 index 749c439a4b8..00000000000 --- a/edge-hub/docker/linux/arm64v8/base/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -ARG base_tag=3.1.19-bionic-arm64v8 -FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} - -# Add an unprivileged user account for running Edge Hub -ARG EDGEHUBUSER_ID=1000 -RUN useradd -ms /bin/bash -u ${EDGEHUBUSER_ID} edgehubuser -ENV EdgeHubUser=edgehubuser - -RUN apt-get update && \ - apt-get install -y libsnappy1v5 && \ - apt-get install -y libcap2-bin && \ - rm -rf /var/lib/apt/lists/* && \ - ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so.2 && \ - ln -s /lib/aarch64-linux-gnu/libdl.so.2 /lib/aarch64-linux-gnu/libdl.so && \ - ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so && \ - ln -s /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc.so.6 - -COPY librocksdb.so /usr/lib - -# add the CAP_NET_BIND_SERVICE capability to the dotnet binary because -# we are starting edge hub as a non-root user -RUN setcap 'cap_net_bind_service=+ep' /usr/share/dotnet/dotnet diff --git a/edge-modules/MetricsCollector/docker/linux/arm32v7/Dockerfile b/edge-modules/MetricsCollector/docker/linux/arm32v7/Dockerfile index 8f68c49d8d6..055f7164600 100644 --- a/edge-modules/MetricsCollector/docker/linux/arm32v7/Dockerfile +++ b/edge-modules/MetricsCollector/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/edge-modules/MetricsCollector/docker/linux/arm64v8/Dockerfile b/edge-modules/MetricsCollector/docker/linux/arm64v8/Dockerfile index 428c51c03c3..5a93e468248 100644 --- a/edge-modules/MetricsCollector/docker/linux/arm64v8/Dockerfile +++ b/edge-modules/MetricsCollector/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/edge-modules/SimulatedTemperatureSensor/docker/linux/arm32v7/Dockerfile b/edge-modules/SimulatedTemperatureSensor/docker/linux/arm32v7/Dockerfile index 45eab6e96a5..bb827165bcc 100644 --- a/edge-modules/SimulatedTemperatureSensor/docker/linux/arm32v7/Dockerfile +++ b/edge-modules/SimulatedTemperatureSensor/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/edge-modules/SimulatedTemperatureSensor/docker/linux/arm32v7/base/Dockerfile b/edge-modules/SimulatedTemperatureSensor/docker/linux/arm32v7/base/Dockerfile deleted file mode 100644 index 3f871ea0f72..00000000000 --- a/edge-modules/SimulatedTemperatureSensor/docker/linux/arm32v7/base/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -ARG base_tag=3.1.19-bionic-arm32v7 -FROM mcr.microsoft.com/dotnet/runtime:${base_tag} - -# Add an unprivileged user account for running the module -RUN useradd -ms /bin/bash moduleuser -USER moduleuser diff --git a/edge-modules/SimulatedTemperatureSensor/docker/linux/arm64v8/Dockerfile b/edge-modules/SimulatedTemperatureSensor/docker/linux/arm64v8/Dockerfile index 32c5c10313d..137b4199fa2 100644 --- a/edge-modules/SimulatedTemperatureSensor/docker/linux/arm64v8/Dockerfile +++ b/edge-modules/SimulatedTemperatureSensor/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/edge-modules/SimulatedTemperatureSensor/docker/linux/arm64v8/base/Dockerfile b/edge-modules/SimulatedTemperatureSensor/docker/linux/arm64v8/base/Dockerfile deleted file mode 100644 index 062289ae472..00000000000 --- a/edge-modules/SimulatedTemperatureSensor/docker/linux/arm64v8/base/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -ARG base_tag=3.1.19-bionic-arm64v8 -FROM mcr.microsoft.com/dotnet/runtime:${base_tag} - -# Add an unprivileged user account for running the module -RUN useradd -ms /bin/bash moduleuser -USER moduleuser diff --git a/edge-modules/azure-monitor/docker/linux/arm32v7/Dockerfile b/edge-modules/azure-monitor/docker/linux/arm32v7/Dockerfile index fd7b0ae6db7..7435a441993 100644 --- a/edge-modules/azure-monitor/docker/linux/arm32v7/Dockerfile +++ b/edge-modules/azure-monitor/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/edge-modules/azure-monitor/docker/linux/arm64v8/Dockerfile b/edge-modules/azure-monitor/docker/linux/arm64v8/Dockerfile index 7721bdaa847..cef172233e5 100644 --- a/edge-modules/azure-monitor/docker/linux/arm64v8/Dockerfile +++ b/edge-modules/azure-monitor/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/edge-modules/iotedge-diagnostics-dotnet/docker/linux/arm32v7/Dockerfile b/edge-modules/iotedge-diagnostics-dotnet/docker/linux/arm32v7/Dockerfile index bfc52f7472b..f938b0d9065 100644 --- a/edge-modules/iotedge-diagnostics-dotnet/docker/linux/arm32v7/Dockerfile +++ b/edge-modules/iotedge-diagnostics-dotnet/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,5 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} ARG EXE_DIR=. diff --git a/edge-modules/iotedge-diagnostics-dotnet/docker/linux/arm64v8/Dockerfile b/edge-modules/iotedge-diagnostics-dotnet/docker/linux/arm64v8/Dockerfile index a6fde99ab98..1dc4260679a 100644 --- a/edge-modules/iotedge-diagnostics-dotnet/docker/linux/arm64v8/Dockerfile +++ b/edge-modules/iotedge-diagnostics-dotnet/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,5 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} ARG EXE_DIR=. diff --git a/edge-util/docker/linux/amd64/Dockerfile b/edge-util/docker/linux/amd64/Dockerfile index 7b6c9f9c38e..7de40d539be 100644 --- a/edge-util/docker/linux/amd64/Dockerfile +++ b/edge-util/docker/linux/amd64/Dockerfile @@ -9,7 +9,7 @@ RUN apk update && \ RUN git clone -b v5.17.2 --depth 1 https://github.com/facebook/rocksdb.git && \ cd rocksdb && \ - CFLAGS="-static-libstdc++ -Wno-psabi -DSNAPPY" PORTABLE=1 make -j ${num_procs} shared_lib && \ + CFLAGS="-static-libstdc++ -Wno-psabi -Wno-error=deprecated-copy -Wno-error=pessimizing-move -Wno-error=redundant-move -DSNAPPY" PORTABLE=1 make -j ${num_procs} shared_lib && \ strip librocksdb.so && \ mkdir -p ../publish && \ - cp -vL librocksdb.so ../publish/ + cp -vL librocksdb.so ../publish/librocksdb.so.amd64 diff --git a/edge-util/docker/linux/arm32v7/Dockerfile b/edge-util/docker/linux/arm32v7/Dockerfile new file mode 100644 index 00000000000..c529d494f63 --- /dev/null +++ b/edge-util/docker/linux/arm32v7/Dockerfile @@ -0,0 +1,30 @@ +# docker file for azureiotedge/azureiotedge-runtime-base:1.2-linux-arm32v7 +FROM ubuntu:18.04 + +ARG num_procs=4 + +# cross-compile arm32 for bionic +RUN sources="$(cat /etc/apt/sources.list | grep -E '^[^#]')" && \ + echo "$sources" | sed -e 's/^deb /deb [arch=amd64] /g' > /etc/apt/sources.list &&\ + echo "$sources" | sed -e 's/^deb /deb [arch=armhf] /g' \ + -e 's|http://archive.ubuntu.com/ubuntu/|http://ports.ubuntu.com/ubuntu-ports/|g' \ + -e 's|http://security.ubuntu.com/ubuntu/|http://ports.ubuntu.com/ubuntu-ports/|g' \ + >> /etc/apt/sources.list + +RUN apt-get update && \ + dpkg --add-architecture armhf &&\ + apt-get install -y make git \ + gcc-8-arm-linux-gnueabihf libsnappy-dev:armhf g++-8-arm-linux-gnueabihf + +RUN git clone -b 'v5.17.2' --depth 1 'https://github.com/facebook/rocksdb' &&\ + cd rocksdb &&\ + CC=arm-linux-gnueabihf-gcc-8 \ + CXX=arm-linux-gnueabihf-g++-8 \ + AR=arm-linux-gnueabihf-ar-8 \ + LIBEXT=.so \ + CFLAGS='-static-libstdc++ -DSNAPPY' \ + PORTABLE=1 \ + make -j8 shared_lib &&\ + arm-linux-gnueabihf-strip ./librocksdb.so &&\ + mkdir -p ../publish &&\ + cp -vL ./librocksdb.so ../publish/librocksdb.so.armhf diff --git a/edge-util/docker/linux/arm64v8/Dockerfile b/edge-util/docker/linux/arm64v8/Dockerfile new file mode 100644 index 00000000000..af5680f197c --- /dev/null +++ b/edge-util/docker/linux/arm64v8/Dockerfile @@ -0,0 +1,30 @@ +# docker file for azureiotedge/azureiotedge-runtime-base:1.2-linux-arm64v8 +FROM ubuntu:18.04 + +ARG num_procs=4 + +# cross-compile arm32 for bionic +RUN sources="$(cat /etc/apt/sources.list | grep -E '^[^#]')" && \ + echo "$sources" | sed -e 's/^deb /deb [arch=amd64] /g' > /etc/apt/sources.list &&\ + echo "$sources" | sed -e 's/^deb /deb [arch=arm64] /g' \ + -e 's|http://archive.ubuntu.com/ubuntu/|http://ports.ubuntu.com/ubuntu-ports/|g' \ + -e 's|http://security.ubuntu.com/ubuntu/|http://ports.ubuntu.com/ubuntu-ports/|g' \ + >> /etc/apt/sources.list + +RUN apt-get update && \ + dpkg --add-architecture arm64 &&\ + apt-get install -y make git \ + gcc-8-aarch64-linux-gnu g++-8-aarch64-linux-gnu libsnappy-dev:arm64 + +RUN git clone -b 'v5.17.2' --depth 1 'https://github.com/facebook/rocksdb' &&\ + cd rocksdb &&\ + CC=aarch64-linux-gnu-gcc-8 \ + CXX=aarch64-linux-gnu-g++-8 \ + AR=aarch64-linux-gnu-ar-8 \ + LIBEXT=.so \ + CFLAGS='-static-libstdc++ -DSNAPPY' \ + PORTABLE=1 \ + make -j8 shared_lib && \ + aarch64-linux-gnu-strip ./librocksdb.so && \ + mkdir -p ../publish &&\ + cp -vL ./librocksdb.so ../publish/librocksdb.so.arm64 diff --git a/scripts/linux/buildImage.sh b/scripts/linux/buildImage.sh index 2e67ef1d72c..80c2cb1dcc1 100755 --- a/scripts/linux/buildImage.sh +++ b/scripts/linux/buildImage.sh @@ -59,6 +59,7 @@ usage() echo "--base-tag Override the tag of the base image (e.g., to use a different version of .NET Core)" echo "--bin-dir Directory containing the output binaries. Either use this option or set env variable BUILD_BINARIESDIRECTORY" echo "--skip-push Build images, but don't push them" + echo "-b, --buildx_flag Use buildx to cross build images from amd64 to arm target" exit 1; } @@ -101,6 +102,9 @@ process_args() elif [[ ${save_next_arg} -eq 8 ]]; then DOCKER_NAMESPACE="$arg" save_next_arg=0 + elif [[ ${save_next_arg} -eq 9 ]]; then + DOCKER_USE_BUILDX="$arg" + save_next_arg=0 else case "$arg" in "-h" | "--help" ) usage;; @@ -112,6 +116,7 @@ process_args() "-P" | "--project" ) save_next_arg=6;; "-i" | "--image-name" ) save_next_arg=7;; "-n" | "--namespace" ) save_next_arg=8;; + "-b" | "--buildx_flag" ) save_next_arg=9;; "--skip-push" ) SKIP_PUSH=1 ;; * ) usage;; esac @@ -161,6 +166,13 @@ process_args() echo "No Dockerfile at $DOCKERFILE" print_help_and_exit fi + + if [[ -z ${DOCKER_USE_BUILDX} ]]; then + echo "Using regular docker feature to build docker image" + DOCKER_USE_BUILDX="false" + else + echo "Using experimental feature Buildx to build docker image" + fi } ############################################################################### @@ -186,15 +198,40 @@ docker_build_and_tag_and_push() echo "Error: Arguments are invalid [$imagename] [$arch] [$context_path]" exit 1 fi - echo "Building and pushing Docker image $imagename for $arch" - docker_build_cmd="docker build --no-cache" - docker_build_cmd+=" -t $DOCKER_REGISTRY/$DOCKER_NAMESPACE/$imagename:$DOCKER_IMAGEVERSION-linux-$arch" - if [[ -n "${dockerfile}" ]]; then - docker_build_cmd+=" --file $dockerfile" - fi - docker_build_cmd+=" $build_args $context_path" + + if [[ $DOCKER_USE_BUILDX = "true" ]]; then + docker buildx ls + docker_build_cmd="docker buildx build --no-cache" + + if [[ $arch = "amd64" ]]; then + docker_build_cmd+=" --platform linux/amd64" + fi + + if [[ $arch = "arm32v7" ]]; then + docker_build_cmd+=" --platform linux/arm/v7" + fi + + if [[ $arch = "arm64v8" ]]; then + docker_build_cmd+=" --platform linux/arm64" + fi + + docker_build_cmd+=" -t $DOCKER_REGISTRY/$DOCKER_NAMESPACE/$imagename:$DOCKER_IMAGEVERSION-linux-$arch" + if [[ -n "${dockerfile}" ]]; then + docker_build_cmd+=" --file $dockerfile" + fi + docker_build_cmd+=" $build_args $context_path --load" + else + docker_build_cmd="docker build --no-cache" + docker_build_cmd+=" -t $DOCKER_REGISTRY/$DOCKER_NAMESPACE/$imagename:$DOCKER_IMAGEVERSION-linux-$arch" + + if [[ -n "${dockerfile}" ]]; then + docker_build_cmd+=" --file $dockerfile" + fi + docker_build_cmd+=" $build_args $context_path" + fi + echo "Running... $docker_build_cmd" ${docker_build_cmd} diff --git a/test/connectivity/modules/NetworkController/docker/linux/arm32v7/Dockerfile b/test/connectivity/modules/NetworkController/docker/linux/arm32v7/Dockerfile index 3eb89adee73..e790ff91e51 100644 --- a/test/connectivity/modules/NetworkController/docker/linux/arm32v7/Dockerfile +++ b/test/connectivity/modules/NetworkController/docker/linux/arm32v7/Dockerfile @@ -1,6 +1,18 @@ -# Network controller arm32 and arm64 require different base images. This is because arm32 needs iproute tooling and thus needs module-base-full. -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && apt-get install -y libcap2-bin libsnappy1v5 && \ + ln -s /lib/arm-linux-gnueabihf/libdl.so.2 /usr/lib/arm-linux-gnueabihf/libdl.so && \ + ln -s /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc.so && \ + rm -rf /var/lib/apt/lists/* + +COPY $EXE_DIR/librocksdb/librocksdb.so.armhf /usr/lib/librocksdb.so + +RUN apt-get update && apt-get install -y --no-install-recommends iproute2 net-tools + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/connectivity/modules/NetworkController/docker/linux/arm64v8/Dockerfile b/test/connectivity/modules/NetworkController/docker/linux/arm64v8/Dockerfile index 78548c9b065..af00cac9334 100644 --- a/test/connectivity/modules/NetworkController/docker/linux/arm64v8/Dockerfile +++ b/test/connectivity/modules/NetworkController/docker/linux/arm64v8/Dockerfile @@ -1,6 +1,20 @@ -# Network controller arm32 and arm64 require different base images. This is because arm32 needs iproute tooling and thus needs module-base-full. -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && \ + apt-get install -y libsnappy1v5 && \ + apt-get install -y libcap2-bin && \ + rm -rf /var/lib/apt/lists/* && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so.2 && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc.so.6 + +COPY $EXE_DIR/librocksdb/librocksdb.so.arm64 /usr/lib/librocksdb.so + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/CloudToDeviceMessageTester/docker/linux/arm32v7/Dockerfile b/test/modules/CloudToDeviceMessageTester/docker/linux/arm32v7/Dockerfile index e66f72290e8..3de8905e15c 100644 --- a/test/modules/CloudToDeviceMessageTester/docker/linux/arm32v7/Dockerfile +++ b/test/modules/CloudToDeviceMessageTester/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/CloudToDeviceMessageTester/docker/linux/arm64v8/Dockerfile b/test/modules/CloudToDeviceMessageTester/docker/linux/arm64v8/Dockerfile index 9097cf79418..6b03fa94644 100644 --- a/test/modules/CloudToDeviceMessageTester/docker/linux/arm64v8/Dockerfile +++ b/test/modules/CloudToDeviceMessageTester/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/DeploymentTester/docker/linux/arm32v7/Dockerfile b/test/modules/DeploymentTester/docker/linux/arm32v7/Dockerfile index 40052615493..a7169365d1a 100644 --- a/test/modules/DeploymentTester/docker/linux/arm32v7/Dockerfile +++ b/test/modules/DeploymentTester/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/DeploymentTester/docker/linux/arm64v8/Dockerfile b/test/modules/DeploymentTester/docker/linux/arm64v8/Dockerfile index 78a80c9e799..2b843027337 100644 --- a/test/modules/DeploymentTester/docker/linux/arm64v8/Dockerfile +++ b/test/modules/DeploymentTester/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/DirectMethodReceiver/docker/linux/arm32v7/Dockerfile b/test/modules/DirectMethodReceiver/docker/linux/arm32v7/Dockerfile index d64e30ddd19..1e6d8ee4ac6 100644 --- a/test/modules/DirectMethodReceiver/docker/linux/arm32v7/Dockerfile +++ b/test/modules/DirectMethodReceiver/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/DirectMethodReceiver/docker/linux/arm64v8/Dockerfile b/test/modules/DirectMethodReceiver/docker/linux/arm64v8/Dockerfile index 6c74dd45840..751e468cd4a 100644 --- a/test/modules/DirectMethodReceiver/docker/linux/arm64v8/Dockerfile +++ b/test/modules/DirectMethodReceiver/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/DirectMethodSender/docker/linux/arm32v7/Dockerfile b/test/modules/DirectMethodSender/docker/linux/arm32v7/Dockerfile index ae2423b95ae..e52d93609b1 100644 --- a/test/modules/DirectMethodSender/docker/linux/arm32v7/Dockerfile +++ b/test/modules/DirectMethodSender/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/DirectMethodSender/docker/linux/arm64v8/Dockerfile b/test/modules/DirectMethodSender/docker/linux/arm64v8/Dockerfile index 7eb7ac213e1..786040dbce5 100644 --- a/test/modules/DirectMethodSender/docker/linux/arm64v8/Dockerfile +++ b/test/modules/DirectMethodSender/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/EdgeHubRestartTester/docker/linux/arm32v7/Dockerfile b/test/modules/EdgeHubRestartTester/docker/linux/arm32v7/Dockerfile index d3f930fcd32..240eeb04d8e 100644 --- a/test/modules/EdgeHubRestartTester/docker/linux/arm32v7/Dockerfile +++ b/test/modules/EdgeHubRestartTester/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/EdgeHubRestartTester/docker/linux/arm64v8/Dockerfile b/test/modules/EdgeHubRestartTester/docker/linux/arm64v8/Dockerfile index 886b63eb150..1076a375661 100644 --- a/test/modules/EdgeHubRestartTester/docker/linux/arm64v8/Dockerfile +++ b/test/modules/EdgeHubRestartTester/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/MetricsValidator/docker/linux/arm32v7/Dockerfile b/test/modules/MetricsValidator/docker/linux/arm32v7/Dockerfile index e1a621fd24f..d1ccf4bb677 100644 --- a/test/modules/MetricsValidator/docker/linux/arm32v7/Dockerfile +++ b/test/modules/MetricsValidator/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,16 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && apt-get install -y libcap2-bin libsnappy1v5 && \ + ln -s /lib/arm-linux-gnueabihf/libdl.so.2 /usr/lib/arm-linux-gnueabihf/libdl.so && \ + ln -s /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc.so && \ + rm -rf /var/lib/apt/lists/* + +RUN apt-get update && apt-get install -y --no-install-recommends iproute2 net-tools + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/MetricsValidator/docker/linux/arm64v8/Dockerfile b/test/modules/MetricsValidator/docker/linux/arm64v8/Dockerfile index d73957c6fcd..14fd59c066f 100644 --- a/test/modules/MetricsValidator/docker/linux/arm64v8/Dockerfile +++ b/test/modules/MetricsValidator/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,18 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && \ + apt-get install -y libsnappy1v5 && \ + apt-get install -y libcap2-bin && \ + rm -rf /var/lib/apt/lists/* && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so.2 && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc.so.6 + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/ModuleRestarter/docker/linux/arm32v7/Dockerfile b/test/modules/ModuleRestarter/docker/linux/arm32v7/Dockerfile index 9575a3a46b1..4eab8090ec3 100644 --- a/test/modules/ModuleRestarter/docker/linux/arm32v7/Dockerfile +++ b/test/modules/ModuleRestarter/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/ModuleRestarter/docker/linux/arm64v8/Dockerfile b/test/modules/ModuleRestarter/docker/linux/arm64v8/Dockerfile index cc9d9c8c278..08dce7f6a03 100644 --- a/test/modules/ModuleRestarter/docker/linux/arm64v8/Dockerfile +++ b/test/modules/ModuleRestarter/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/NumberLogger/docker/linux/arm32v7/Dockerfile b/test/modules/NumberLogger/docker/linux/arm32v7/Dockerfile index c6fcbd66a69..22d747c3a31 100644 --- a/test/modules/NumberLogger/docker/linux/arm32v7/Dockerfile +++ b/test/modules/NumberLogger/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/NumberLogger/docker/linux/arm64v8/Dockerfile b/test/modules/NumberLogger/docker/linux/arm64v8/Dockerfile index 7366e545b9c..39d7dae09a3 100644 --- a/test/modules/NumberLogger/docker/linux/arm64v8/Dockerfile +++ b/test/modules/NumberLogger/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/Relayer/docker/linux/arm32v7/Dockerfile b/test/modules/Relayer/docker/linux/arm32v7/Dockerfile index 9557e1d150e..90284d748e9 100644 --- a/test/modules/Relayer/docker/linux/arm32v7/Dockerfile +++ b/test/modules/Relayer/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/Relayer/docker/linux/arm64v8/Dockerfile b/test/modules/Relayer/docker/linux/arm64v8/Dockerfile index 24034b2ed0c..700bcf3dd8d 100644 --- a/test/modules/Relayer/docker/linux/arm64v8/Dockerfile +++ b/test/modules/Relayer/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/TemperatureFilter/docker/linux/arm32v7/Dockerfile b/test/modules/TemperatureFilter/docker/linux/arm32v7/Dockerfile index a206cab8498..c66176a7b59 100644 --- a/test/modules/TemperatureFilter/docker/linux/arm32v7/Dockerfile +++ b/test/modules/TemperatureFilter/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/TemperatureFilter/docker/linux/arm64v8/Dockerfile b/test/modules/TemperatureFilter/docker/linux/arm64v8/Dockerfile index bd36bac326f..9c0544a34e6 100644 --- a/test/modules/TemperatureFilter/docker/linux/arm64v8/Dockerfile +++ b/test/modules/TemperatureFilter/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/TestAnalyzer/docker/linux/amd64/Dockerfile b/test/modules/TestAnalyzer/docker/linux/amd64/Dockerfile index 407c7e6b423..4e06296ba30 100644 --- a/test/modules/TestAnalyzer/docker/linux/amd64/Dockerfile +++ b/test/modules/TestAnalyzer/docker/linux/amd64/Dockerfile @@ -1,6 +1,4 @@ ARG base_tag=3.1.19-alpine3.14 -# base dockerfile is located at \edge-util\docker\linux\amd64 -FROM azureiotedge/azureiotedge-runtime-base:1.2-linux-amd64 as builder FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} @@ -21,7 +19,7 @@ RUN adduser -Ds /bin/sh moduleuser USER moduleuser # Install RocksDB -COPY --from=builder publish/* /usr/local/lib/ +COPY $EXE_DIR/librocksdb/librocksdb.so.amd64 /usr/local/lib/librocksdb.so CMD echo "$(date --utc +"[%Y-%m-%d %H:%M:%S %:z]"): Starting Module" && \ exec /usr/bin/dotnet TestAnalyzer.dll diff --git a/test/modules/TestAnalyzer/docker/linux/arm32v7/Dockerfile b/test/modules/TestAnalyzer/docker/linux/arm32v7/Dockerfile index bbce9c99dc3..4825f170c51 100644 --- a/test/modules/TestAnalyzer/docker/linux/arm32v7/Dockerfile +++ b/test/modules/TestAnalyzer/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,18 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && apt-get install -y libcap2-bin libsnappy1v5 && \ + ln -s /lib/arm-linux-gnueabihf/libdl.so.2 /usr/lib/arm-linux-gnueabihf/libdl.so && \ + ln -s /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc.so && \ + rm -rf /var/lib/apt/lists/* + +COPY $EXE_DIR/librocksdb/librocksdb.so.armhf /usr/lib/librocksdb.so + +RUN apt-get update && apt-get install -y --no-install-recommends iproute2 net-tools + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/TestAnalyzer/docker/linux/arm32v7/base/Dockerfile b/test/modules/TestAnalyzer/docker/linux/arm32v7/base/Dockerfile deleted file mode 100644 index 3355be7e25c..00000000000 --- a/test/modules/TestAnalyzer/docker/linux/arm32v7/base/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -ARG base_tag=3.1.19-bionic-arm32v7 -FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} - -RUN apt-get update && apt-get install -y libcap2-bin libsnappy1v5 && \ - ln -s /lib/arm-linux-gnueabihf/libdl.so.2 /usr/lib/arm-linux-gnueabihf/libdl.so && \ - ln -s /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc.so && \ - rm -rf /var/lib/apt/lists/* - -COPY librocksdb.so /usr/lib/ - -RUN apt-get update && apt-get install -y --no-install-recommends iproute2 net-tools - -# Add an unprivileged user account for running the module -RUN useradd -ms /bin/bash moduleuser -USER moduleuser diff --git a/test/modules/TestAnalyzer/docker/linux/arm64v8/Dockerfile b/test/modules/TestAnalyzer/docker/linux/arm64v8/Dockerfile index 179060b3cdd..d6e8af992d5 100644 --- a/test/modules/TestAnalyzer/docker/linux/arm64v8/Dockerfile +++ b/test/modules/TestAnalyzer/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,20 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && \ + apt-get install -y libsnappy1v5 && \ + apt-get install -y libcap2-bin && \ + rm -rf /var/lib/apt/lists/* && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so.2 && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc.so.6 + +COPY $EXE_DIR/librocksdb/librocksdb.so.arm64 /usr/lib/librocksdb.so + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/TestAnalyzer/docker/linux/arm64v8/base/Dockerfile b/test/modules/TestAnalyzer/docker/linux/arm64v8/base/Dockerfile deleted file mode 100644 index 2b4e053d580..00000000000 --- a/test/modules/TestAnalyzer/docker/linux/arm64v8/base/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -ARG base_tag=3.1.19-bionic-arm64v8 -FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} - -RUN apt-get update && \ - apt-get install -y libsnappy1v5 && \ - apt-get install -y libcap2-bin && \ - rm -rf /var/lib/apt/lists/* && \ - ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so.2 && \ - ln -s /lib/aarch64-linux-gnu/libdl.so.2 /lib/aarch64-linux-gnu/libdl.so && \ - ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so && \ - ln -s /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc.so.6 - -COPY librocksdb.so /usr/lib - -# Add an unprivileged user account for running the module -RUN useradd -ms /bin/bash moduleuser -USER moduleuser diff --git a/test/modules/TestResultCoordinator/docker/linux/amd64/Dockerfile b/test/modules/TestResultCoordinator/docker/linux/amd64/Dockerfile index 2f317c4db3a..630e3209b7a 100644 --- a/test/modules/TestResultCoordinator/docker/linux/amd64/Dockerfile +++ b/test/modules/TestResultCoordinator/docker/linux/amd64/Dockerfile @@ -1,6 +1,4 @@ ARG base_tag=3.1.19-alpine3.14 -# base dockerfile is located at \edge-util\docker\linux\amd64 -FROM azureiotedge/azureiotedge-runtime-base:1.2-linux-amd64 as builder FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} @@ -24,7 +22,7 @@ RUN adduser -Ds /bin/sh moduleuser USER moduleuser # Install RocksDB -COPY --from=builder publish/* /usr/local/lib/ +COPY $EXE_DIR/librocksdb/librocksdb.so.amd64 /usr/local/lib/librocksdb.so CMD echo "$(date --utc +"[%Y-%m-%d %H:%M:%S %:z]"): Starting Module" && \ exec /usr/bin/dotnet TestResultCoordinator.dll diff --git a/test/modules/TestResultCoordinator/docker/linux/arm32v7/Dockerfile b/test/modules/TestResultCoordinator/docker/linux/arm32v7/Dockerfile index b21448a9317..be7b53c65b1 100644 --- a/test/modules/TestResultCoordinator/docker/linux/arm32v7/Dockerfile +++ b/test/modules/TestResultCoordinator/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,18 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && apt-get install -y libcap2-bin libsnappy1v5 && \ + ln -s /lib/arm-linux-gnueabihf/libdl.so.2 /usr/lib/arm-linux-gnueabihf/libdl.so && \ + ln -s /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc.so && \ + rm -rf /var/lib/apt/lists/* + +COPY $EXE_DIR/librocksdb/librocksdb.so.armhf /usr/lib/librocksdb.so + +RUN apt-get update && apt-get install -y --no-install-recommends iproute2 net-tools + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/TestResultCoordinator/docker/linux/arm64v8/Dockerfile b/test/modules/TestResultCoordinator/docker/linux/arm64v8/Dockerfile index b4f2a5c44b0..6e3611ca17f 100644 --- a/test/modules/TestResultCoordinator/docker/linux/arm64v8/Dockerfile +++ b/test/modules/TestResultCoordinator/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,20 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && \ + apt-get install -y libsnappy1v5 && \ + apt-get install -y libcap2-bin && \ + rm -rf /var/lib/apt/lists/* && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so.2 && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc.so.6 + +COPY $EXE_DIR/librocksdb/librocksdb.so.arm64 /usr/lib/librocksdb.so + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/TwinTester/docker/linux/amd64/Dockerfile b/test/modules/TwinTester/docker/linux/amd64/Dockerfile index 3027e618af3..2138729ca41 100644 --- a/test/modules/TwinTester/docker/linux/amd64/Dockerfile +++ b/test/modules/TwinTester/docker/linux/amd64/Dockerfile @@ -1,6 +1,4 @@ ARG base_tag=3.1.19-alpine3.14 -# base dockerfile is located at \edge-util\docker\linux\amd64 -FROM azureiotedge/azureiotedge-runtime-base:1.2-linux-amd64 as builder FROM mcr.microsoft.com/dotnet/runtime:${base_tag} @@ -17,7 +15,7 @@ WORKDIR /app COPY $EXE_DIR/ ./ # Install RocksDB -COPY --from=builder publish/* /usr/local/lib/ +COPY $EXE_DIR/librocksdb/librocksdb.so.amd64 /usr/local/lib/librocksdb.so # Add an unprivileged user account for running the module RUN adduser -Ds /bin/sh moduleuser diff --git a/test/modules/TwinTester/docker/linux/arm32v7/Dockerfile b/test/modules/TwinTester/docker/linux/arm32v7/Dockerfile index 94c734c7705..79f57a29188 100644 --- a/test/modules/TwinTester/docker/linux/arm32v7/Dockerfile +++ b/test/modules/TwinTester/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,18 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && apt-get install -y libcap2-bin libsnappy1v5 && \ + ln -s /lib/arm-linux-gnueabihf/libdl.so.2 /usr/lib/arm-linux-gnueabihf/libdl.so && \ + ln -s /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc.so && \ + rm -rf /var/lib/apt/lists/* + +COPY $EXE_DIR/librocksdb/librocksdb.so.armhf /usr/lib/librocksdb.so + +RUN apt-get update && apt-get install -y --no-install-recommends iproute2 net-tools + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/TwinTester/docker/linux/arm64v8/Dockerfile b/test/modules/TwinTester/docker/linux/arm64v8/Dockerfile index 9f74ef90188..e83aaafc38a 100644 --- a/test/modules/TwinTester/docker/linux/arm64v8/Dockerfile +++ b/test/modules/TwinTester/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,20 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base-full:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/aspnet:${base_tag} + +RUN apt-get update && \ + apt-get install -y libsnappy1v5 && \ + apt-get install -y libcap2-bin && \ + rm -rf /var/lib/apt/lists/* && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so.2 && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so && \ + ln -s /lib/aarch64-linux-gnu/libc.so.6 /usr/lib/aarch64-linux-gnu/libc.so.6 + +COPY $EXE_DIR/librocksdb/librocksdb.so.arm64 /usr/lib/librocksdb.so + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/load-gen/docker/linux/arm32v7/Dockerfile b/test/modules/load-gen/docker/linux/arm32v7/Dockerfile index f2e620d44dc..1727e3f4756 100644 --- a/test/modules/load-gen/docker/linux/arm32v7/Dockerfile +++ b/test/modules/load-gen/docker/linux/arm32v7/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm32v7 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm32v7 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=. diff --git a/test/modules/load-gen/docker/linux/arm64v8/Dockerfile b/test/modules/load-gen/docker/linux/arm64v8/Dockerfile index a9f1ba0cacc..e41d8e0cc30 100644 --- a/test/modules/load-gen/docker/linux/arm64v8/Dockerfile +++ b/test/modules/load-gen/docker/linux/arm64v8/Dockerfile @@ -1,5 +1,9 @@ -ARG base_tag=1.0.5.14-linux-arm64v8 -FROM azureiotedge/azureiotedge-module-base:${base_tag} +ARG base_tag=3.1.19-bionic-arm64v8 +FROM mcr.microsoft.com/dotnet/runtime:${base_tag} + +# Add an unprivileged user account for running the module +RUN useradd -ms /bin/bash moduleuser +USER moduleuser ARG EXE_DIR=.