├── .github ├── actions │ ├── build-test-and-publish-matlab-deps │ │ └── action.yml │ └── build-test-and-publish-matlab │ │ └── action.yml └── workflows │ ├── README.md │ ├── build-and-publish-ubi-hardening-extras.yml │ ├── build-test-and-publish-matlab-deps.yml │ ├── build-test-and-publish-matlab.yml │ ├── build-test-and-publish-network-licensing-manager.yml │ ├── build-test-and-publish-single-matlab-deps.yml │ ├── matlab-runtime-deps-r2023b-ubuntu22.04.yml │ ├── matlab-runtime-deps-r2024a-ubuntu22.04.yml │ ├── matlab-runtime-deps-r2024b-ubuntu24.04.yml │ ├── polyspace-deps-r2022b-ubuntu20.04.yml │ ├── polyspace-deps-r2023a-ubuntu20.04.yml │ └── polyspace-deps-r2023b-ubuntu22.04.yml ├── .gitignore ├── LICENSE.md ├── README.md ├── SECURITY.md ├── matlab-deps ├── README.md ├── r2019b │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ └── ubuntu18.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2020a │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ └── ubuntu18.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2020b │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ └── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2021a │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ └── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2021b │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ ├── ubi8 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ └── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2022a │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ ├── ubi8 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ └── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2022b │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ ├── ubi8 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubi9 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ └── ubuntu22.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2023a │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ ├── ubi8 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubi9 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ └── ubuntu22.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2023b │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ ├── ubi8 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubi9 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ └── ubuntu22.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2024a │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ ├── ubi8 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubi9 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ └── ubuntu22.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2024b │ ├── aws-batch │ │ ├── Dockerfile │ │ ├── base-dependencies.txt │ │ └── stageDataAndRunJob.sh │ ├── ubi8 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubi9 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ ├── ubuntu22.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt │ └── ubuntu24.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt └── r2025a │ ├── aws-batch │ ├── Dockerfile │ ├── base-dependencies.txt │ └── stageDataAndRunJob.sh │ ├── ubi8 │ ├── Dockerfile │ └── base-dependencies.txt │ ├── ubi9 │ ├── Dockerfile │ └── base-dependencies.txt │ ├── ubuntu22.04 │ ├── Dockerfile │ └── base-dependencies.txt │ └── ubuntu24.04 │ ├── Dockerfile │ └── base-dependencies.txt ├── matlab-runtime-deps ├── README.md ├── r2023b │ └── ubuntu22.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2024a │ └── ubuntu22.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt └── r2024b │ └── ubuntu24.04 │ ├── Dockerfile │ └── base-dependencies.txt ├── matlab ├── Dockerfile ├── README.md ├── README_DEEP_LEARNING.md ├── build │ ├── config │ │ ├── MATLAB.desktop │ │ ├── localsudo │ │ ├── matlab.prf │ │ ├── matlab_deep_learning │ │ │ └── MNISTExample.mlx │ │ ├── novnc_login_redirect.html │ │ ├── startup.m │ │ ├── xfce4 │ │ │ ├── desktop │ │ │ │ └── icons.screen0.rc │ │ │ ├── panel │ │ │ │ ├── launcher-10 │ │ │ │ │ └── panel-file-manager.desktop │ │ │ │ ├── launcher-12 │ │ │ │ │ └── panel-app-finder.desktop │ │ │ │ └── launcher-9 │ │ │ │ │ └── panel-terminal.desktop │ │ │ └── xfconf │ │ │ │ └── xfce-perchannel-xml │ │ │ │ ├── wallpaper.jpg │ │ │ │ ├── xfce4-desktop.xml │ │ │ │ └── xfce4-panel.xml │ │ ├── xscreensaver │ │ └── xstartup │ ├── readmes │ │ ├── browser_readme │ │ ├── help_readme │ │ ├── vnc_readme │ │ └── welcome_readme │ ├── run.sh │ └── utils.sh ├── docker-bake.hcl └── release-config │ ├── R2023a.env.hcl │ ├── R2023b.env.hcl │ ├── R2024a.env.hcl │ ├── R2024b.env.hcl │ └── R2025a.env.hcl ├── network-license-manager ├── Dockerfile ├── README.md ├── compose.yaml ├── docker-entrypoint.sh ├── licenses │ ├── .gitignore │ └── README.md ├── logs │ └── .gitignore └── tests │ ├── .gitignore │ ├── requirements.txt │ ├── setup_gen_licfile.sh │ ├── test_nlm_image.py │ ├── test_nlm_licensing.py │ └── utils.py ├── polyspace-deps ├── README.md ├── r2022b │ └── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt ├── r2023a │ └── ubuntu20.04 │ │ ├── Dockerfile │ │ └── base-dependencies.txt └── r2023b │ └── ubuntu22.04 │ ├── Dockerfile │ └── base-dependencies.txt ├── tests ├── .gitignore ├── matlab-deps │ ├── .gitignore │ ├── __init__.py │ ├── test_awsbatch.py │ ├── test_ubi8.py │ ├── test_ubi9.py │ ├── test_ubuntu1804.py │ ├── test_ubuntu2004.py │ ├── test_ubuntu2204.py │ ├── test_ubuntu2404.py │ └── utils │ │ ├── __init__.py │ │ ├── base.py │ │ ├── release_platform.py │ │ ├── test_ubi.py │ │ └── test_ubuntu.py ├── matlab │ ├── __init__.py │ ├── common_setup.sh │ ├── matlab │ │ ├── AvailableProductsTest.m │ │ ├── __init__.py │ │ ├── run_AvailableProductsTest.py │ │ └── test_ddux.py │ ├── matlab_deep_learning │ │ ├── DeepLearningAddonsTests.m │ │ ├── __init__.py │ │ ├── run_DeepLearningAddonsTests.py │ │ └── test_ddux.py │ ├── run-bats-test.sh │ ├── shared │ │ ├── Startup.m │ │ ├── __init__.py │ │ ├── run_startup.py │ │ ├── test_ddux.py │ │ ├── test_matlab_docker_batch.py │ │ ├── test_matlab_docker_shell.py │ │ ├── test_matlab_docker_vnc.py │ │ ├── test_matlab_proxy_integration.py │ │ └── test_msh_integration.py │ ├── shtools │ │ ├── create_file_with_content.sh │ │ ├── create_mock.sh │ │ ├── create_mock_df.sh │ │ ├── create_mock_license.sh │ │ ├── create_mock_matlab.sh │ │ └── create_mock_vnc_novnc.sh │ ├── tRun.bats │ ├── tUtils.bats │ ├── test_matlab-deep-learning.py │ └── test_matlab.py ├── pytools │ ├── __init__.py │ ├── dockertool.py │ ├── helper.py │ └── test_suite_launcher.py ├── requirements.txt └── tools │ └── gen_license_file.sh └── ubi-hardening-extras ├── README.md ├── almalinux-base ├── Dockerfile └── base-dependencies.txt ├── icewm └── Dockerfile ├── matlab └── Dockerfile ├── novnc └── Dockerfile ├── tests ├── .gitignore ├── icewm │ └── icewm_test.py ├── matlab │ └── matlab_test.py ├── novnc │ └── novnc_test.py ├── requirements.txt ├── tigervnc │ └── tigervnc_test.py ├── utils │ ├── Dockerfile │ ├── Dockerfile.matlab │ ├── Dockerfile.novnc │ └── basetest.py └── xterm │ └── xterm_test.py ├── tigervnc └── Dockerfile ├── workflow ├── extract_metadata.sh ├── extraction.Dockerfile └── increment_version.sh └── xterm └── Dockerfile /.github/workflows/build-test-and-publish-network-licensing-manager.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | 3 | name: Build, Test and Publish the Network License Manager Container 4 | 5 | # Trigger this workflow either manually or when a new change is pushed to the 6 | # repo (except .md files) 7 | on: 8 | workflow_dispatch: 9 | # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path 10 | push: 11 | branches: 12 | - 'main' 13 | paths: 14 | - 'network-license-manager/**' 15 | schedule: 16 | # Run at 00:00 on every Monday (1st Day of the Week) 17 | - cron: "0 0 * * 1" 18 | 19 | env: 20 | IMAGE_NAME: ghcr.io/${{ github.repository }}/network-license-manager 21 | LICENSE_FILE_PATH: ${{ github.workspace }}/licenses/license.dat 22 | HOSTNAME: docker-server 23 | MAC_ADDRESS: ${{ secrets.NLM_CONTAINER_TEST_MAC_ADDRESS }} 24 | PORT: 27012 25 | MATLAB_RELEASE: latest 26 | 27 | 28 | jobs: 29 | build-test-push-image: 30 | runs-on: ubuntu-latest 31 | 32 | steps: 33 | - name: Checkout repo 34 | uses: actions/checkout@v4 35 | 36 | - name: Login to GitHub Container Registry 37 | uses: docker/login-action@v3 38 | with: 39 | registry: ghcr.io 40 | username: ${{ github.repository_owner }} 41 | password: ${{ secrets.GITHUB_TOKEN }} 42 | 43 | - name: Set up Docker Buildx 44 | uses: docker/setup-buildx-action@v3 45 | 46 | - name: Build image locally 47 | uses: docker/build-push-action@v5 48 | with: 49 | context: ./network-license-manager 50 | platforms: linux/amd64 51 | load: true 52 | tags: | 53 | ${{ env.IMAGE_NAME }}:latest 54 | 55 | - name: Set up Python 3 56 | uses: actions/setup-python@v5 57 | with: 58 | python-version: "3.10" 59 | 60 | - name: Install test dependencies 61 | working-directory: ./network-license-manager/tests 62 | run: | 63 | python -m pip install --upgrade pip 64 | pip install -r requirements.txt 65 | 66 | - name: Generate license file 67 | env: 68 | MATLAB_LICENSE_FILE: ${{ secrets.MATLAB_LICENSE_FILE_R2025A }} 69 | working-directory: ./network-license-manager/tests 70 | run: ./setup_gen_licfile.sh 71 | 72 | - name: Test container 73 | env: 74 | IMAGE_NAME: ${{ env.IMAGE_NAME }}:latest 75 | working-directory: ./network-license-manager/tests 76 | run: python -m unittest 77 | 78 | - name: Push the image to ghcr.io 79 | run: docker push ${{ env.IMAGE_NAME }}:latest 80 | -------------------------------------------------------------------------------- /.github/workflows/build-test-and-publish-single-matlab-deps.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2024-2025 The MathWorks, Inc. 2 | 3 | name: Build Test and Publish a Matlab-Deps Image 4 | 5 | # images build with this workflow are created with the following naming conventions: 6 | # ${image_name}:${matlab_release}-${os} 7 | 8 | # built images are pushed to DockerHub. Note: Both camel & Pascal case versions of tags are generated and published 9 | 10 | # This workflow is only be triggered when called from another workflow. 11 | on: 12 | workflow_dispatch: 13 | inputs: 14 | docker_build_context: 15 | description: "Relative path to folder with Dockerfile. Ex: ./matlab-deps/r2023a/ubuntu20.04" 16 | required: true 17 | type: string 18 | image_name: 19 | description: "Name of image, without tag. Example: mathworks/matlab-deps" 20 | required: true 21 | type: string 22 | matlab_release_tag: 23 | description: "Name of the MATLAB release. Example: r2023a" 24 | required: true 25 | type: string 26 | os_info_tag: 27 | description: "Allowed values: aws-batch, ubi8, ubi9, ubuntu20.04 ubuntu22.04" 28 | required: true 29 | type: string 30 | is_default_os: 31 | description: "Specify whether the OS being tagged is desired default OS. For example, This field is used to configure that matlab-deps/r2023a should point to matlab-deps/r2023a-ubuntu20.04" 32 | required: true 33 | type: boolean 34 | should_add_latest_tag: 35 | description: "Specify if this image should also be tagged as latest" 36 | required: true 37 | type: boolean 38 | test_file_path: 39 | description: "Relative path to the root directory. Ex: ./tests/matlab-deps/test_ubuntu2204.py" 40 | required: false 41 | type: string 42 | 43 | jobs: 44 | build-push-image: 45 | runs-on: ubuntu-latest 46 | steps: 47 | - name: Checkout repo 48 | uses: actions/checkout@v4 49 | 50 | - name: Login to Docker Hub 51 | uses: docker/login-action@v2 52 | with: 53 | username: ${{ secrets.DOCKERHUB_USERNAME }} 54 | password: ${{ secrets.DOCKERHUB_TOKEN }} 55 | 56 | - name: Build, Test, and Publish MATLAB-Deps 57 | uses: ./.github/actions/build-test-and-publish-matlab-deps 58 | with: 59 | docker_build_context: ${{ inputs.docker_build_context }} 60 | image_name: ${{ inputs.image_name }} 61 | matlab_release_tag: ${{ inputs.matlab_release_tag }} 62 | os_info_tag: ${{ inputs.os_info_tag }} 63 | is_default_os: ${{ inputs.is_default_os }} 64 | should_add_latest_tag: ${{ inputs.should_add_latest_tag }} 65 | test_file_path: ${{ inputs.test_file_path }} 66 | -------------------------------------------------------------------------------- /.github/workflows/matlab-runtime-deps-r2023b-ubuntu22.04.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | # Build & Publish matlab-runtime-deps/r2023b/ubuntu22.04 3 | name: matlab-runtime-deps-r2023b-ubuntu22.04 4 | 5 | # Define when builds will occur: 6 | on: 7 | # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path 8 | push: 9 | branches: 10 | - 'main' 11 | paths: 12 | - 'matlab-runtime-deps/r2023b/ubuntu22.04/**' 13 | 14 | # Run at 00:00 on every Monday (1st Day of the Week) (See: crontab.guru) 15 | schedule: 16 | - cron: '0 0 * * 1' 17 | 18 | workflow_dispatch: 19 | 20 | jobs: 21 | build-and-publish: 22 | runs-on: ubuntu-latest 23 | steps: 24 | - name: Checkout repo 25 | uses: actions/checkout@v4 26 | 27 | - name: Login to Docker Hub 28 | uses: docker/login-action@v2 29 | with: 30 | username: ${{ secrets.DOCKERHUB_USERNAME }} 31 | password: ${{ secrets.DOCKERHUB_TOKEN }} 32 | 33 | - name: Build, and Publish MATLAB Runtime Dependencies 34 | uses: ./.github/actions/build-test-and-publish-matlab-deps 35 | with: 36 | docker_build_context: './matlab-runtime-deps/r2023b/ubuntu22.04' 37 | image_name: mathworks/matlab-runtime-deps 38 | matlab_release_tag: 'r2023b' 39 | os_info_tag: 'ubuntu22.04' 40 | is_default_os: true 41 | should_add_latest_tag: false 42 | -------------------------------------------------------------------------------- /.github/workflows/matlab-runtime-deps-r2024a-ubuntu22.04.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | # Build & Publish matlab-runtime-deps/r2024a/ubuntu22.04 3 | name: matlab-runtime-deps-r2024a-ubuntu22.04 4 | 5 | # Define when builds will occur: 6 | on: 7 | # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path 8 | push: 9 | branches: 10 | - 'main' 11 | paths: 12 | - 'matlab-runtime-deps/r2024a/ubuntu22.04/**' 13 | 14 | # Run at 00:00 on every Monday (1st Day of the Week) (See: crontab.guru) 15 | schedule: 16 | - cron: '0 0 * * 1' 17 | 18 | workflow_dispatch: 19 | 20 | jobs: 21 | build-and-publish: 22 | runs-on: ubuntu-latest 23 | steps: 24 | - name: Checkout repo 25 | uses: actions/checkout@v4 26 | 27 | - name: Login to Docker Hub 28 | uses: docker/login-action@v2 29 | with: 30 | username: ${{ secrets.DOCKERHUB_USERNAME }} 31 | password: ${{ secrets.DOCKERHUB_TOKEN }} 32 | 33 | - name: Build, and Publish MATLAB Runtime Dependencies 34 | uses: ./.github/actions/build-test-and-publish-matlab-deps 35 | with: 36 | docker_build_context: './matlab-runtime-deps/r2024a/ubuntu22.04' 37 | image_name: mathworks/matlab-runtime-deps 38 | matlab_release_tag: 'r2024a' 39 | os_info_tag: 'ubuntu22.04' 40 | is_default_os: true 41 | should_add_latest_tag: false 42 | -------------------------------------------------------------------------------- /.github/workflows/matlab-runtime-deps-r2024b-ubuntu24.04.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | # Build & Publish matlab-runtime-deps/r2024b/ubuntu24.04 3 | name: matlab-runtime-deps-r2024b-ubuntu24.04 4 | 5 | # Define when builds will occur: 6 | on: 7 | # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path 8 | push: 9 | branches: 10 | - 'main' 11 | paths: 12 | - 'matlab-runtime-deps/r2024b/ubuntu24.04/**' 13 | 14 | # Run at 00:00 on every Monday (1st Day of the Week) (See: crontab.guru) 15 | schedule: 16 | - cron: '0 0 * * 1' 17 | 18 | workflow_dispatch: 19 | 20 | jobs: 21 | build-and-publish: 22 | runs-on: ubuntu-latest 23 | steps: 24 | - name: Checkout repo 25 | uses: actions/checkout@v4 26 | 27 | - name: Login to Docker Hub 28 | uses: docker/login-action@v2 29 | with: 30 | username: ${{ secrets.DOCKERHUB_USERNAME }} 31 | password: ${{ secrets.DOCKERHUB_TOKEN }} 32 | 33 | - name: Build, and Publish MATLAB Runtime Dependencies 34 | uses: ./.github/actions/build-test-and-publish-matlab-deps 35 | with: 36 | docker_build_context: './matlab-runtime-deps/r2024b/ubuntu24.04' 37 | image_name: mathworks/matlab-runtime-deps 38 | matlab_release_tag: 'r2024b' 39 | os_info_tag: 'ubuntu24.04' 40 | is_default_os: true 41 | should_add_latest_tag: true 42 | -------------------------------------------------------------------------------- /.github/workflows/polyspace-deps-r2022b-ubuntu20.04.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | # Build & Publish polyspace-deps/r2022b/ubuntu20.04 3 | name: polyspace-deps-r2022b-ubuntu20.04 4 | 5 | # Define when builds will occur: 6 | on: 7 | # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path 8 | push: 9 | branches: 10 | - 'main' 11 | paths: 12 | - 'polyspace-deps/r2022b/ubuntu20.04/**' 13 | 14 | # Run at 00:00 on every Monday (1st Day of the Week) (See: crontab.guru) 15 | schedule: 16 | - cron: '0 0 * * 1' 17 | 18 | workflow_dispatch: 19 | 20 | jobs: 21 | build-and-publish: 22 | runs-on: ubuntu-latest 23 | steps: 24 | - name: Checkout repo 25 | uses: actions/checkout@v4 26 | 27 | - name: Login to Docker Hub 28 | uses: docker/login-action@v2 29 | with: 30 | username: ${{ secrets.DOCKERHUB_USERNAME }} 31 | password: ${{ secrets.DOCKERHUB_TOKEN }} 32 | 33 | - name: Build, and Publish Polyspace Dependencies 34 | uses: ./.github/actions/build-test-and-publish-matlab-deps 35 | with: 36 | docker_build_context: './polyspace-deps/r2022b/ubuntu20.04' 37 | image_name: mathworks/polyspace-deps 38 | matlab_release_tag: 'r2022b' 39 | os_info_tag: 'ubuntu20.04' 40 | is_default_os: true 41 | should_add_latest_tag: false 42 | -------------------------------------------------------------------------------- /.github/workflows/polyspace-deps-r2023a-ubuntu20.04.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | # Build & Publish polyspace-deps/r2023a/ubuntu20.04 3 | name: polyspace-deps-r2023a-ubuntu20.04 4 | 5 | # Define when builds will occur: 6 | on: 7 | # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path 8 | push: 9 | branches: 10 | - 'main' 11 | paths: 12 | - 'polyspace-deps/r2023a/ubuntu20.04/**' 13 | 14 | # Run at 00:00 on every Monday (1st Day of the Week) (See: crontab.guru) 15 | schedule: 16 | - cron: '0 0 * * 1' 17 | 18 | workflow_dispatch: 19 | 20 | jobs: 21 | build-and-publish: 22 | runs-on: ubuntu-latest 23 | steps: 24 | - name: Checkout repo 25 | uses: actions/checkout@v4 26 | 27 | - name: Login to Docker Hub 28 | uses: docker/login-action@v2 29 | with: 30 | username: ${{ secrets.DOCKERHUB_USERNAME }} 31 | password: ${{ secrets.DOCKERHUB_TOKEN }} 32 | 33 | - name: Build, and Publish Polyspace Dependencies 34 | uses: ./.github/actions/build-test-and-publish-matlab-deps 35 | with: 36 | docker_build_context: './polyspace-deps/r2023a/ubuntu20.04' 37 | image_name: mathworks/polyspace-deps 38 | matlab_release_tag: 'r2023a' 39 | os_info_tag: 'ubuntu20.04' 40 | is_default_os: true 41 | should_add_latest_tag: false 42 | -------------------------------------------------------------------------------- /.github/workflows/polyspace-deps-r2023b-ubuntu22.04.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | # Build & Publish polyspace-deps/r2023b/ubuntu22.04 3 | name: polyspace-deps-r2023b-ubuntu22.04 4 | 5 | # Define when builds will occur: 6 | on: 7 | # Run workflow when there is a push to the 'main' branch & push includes changes to any files in described path 8 | push: 9 | branches: 10 | - 'main' 11 | paths: 12 | - 'polyspace-deps/r2023b/ubuntu22.04/**' 13 | 14 | # Run at 00:00 on every Monday (1st Day of the Week) (See: crontab.guru) 15 | schedule: 16 | - cron: '0 0 * * 1' 17 | 18 | workflow_dispatch: 19 | 20 | jobs: 21 | build-and-publish: 22 | runs-on: ubuntu-latest 23 | steps: 24 | - name: Checkout repo 25 | uses: actions/checkout@v4 26 | 27 | - name: Login to Docker Hub 28 | uses: docker/login-action@v2 29 | with: 30 | username: ${{ secrets.DOCKERHUB_USERNAME }} 31 | password: ${{ secrets.DOCKERHUB_TOKEN }} 32 | 33 | - name: Build, and Publish Polyspace Dependencies 34 | uses: ./.github/actions/build-test-and-publish-matlab-deps 35 | with: 36 | docker_build_context: './polyspace-deps/r2023b/ubuntu22.04' 37 | image_name: mathworks/polyspace-deps 38 | matlab_release_tag: 'r2023b' 39 | os_info_tag: 'ubuntu22.04' 40 | is_default_os: true 41 | should_add_latest_tag: true 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | **/*.pyc 3 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE 2 | 3 | The files in this GitHub repository refer to commercial software products and services, virtual machine images, and related materials of The MathWorks, Inc. (“MathWorks Programs”). MathWorks Programs are separately licensed under the MathWorks Software License Agreement, available in the desktop installation of the MathWorks Programs or in the virtual machine image. The files in this GitHub repository may also refer to third-party software licensed under separate terms provided by such third parties. 4 | 5 | The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository. 6 | 7 | Copyright (c) 2021, The MathWorks, Inc. 8 | 9 | All rights reserved. 10 | 11 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 12 | 13 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 14 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 15 | 3. In all cases, the software is, and all modifications and derivatives of the software shall be, licensed to you solely for use in conjunction with MathWorks products and service offerings. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Container Images 2 | 3 | This repository contains source files for the container images published by MathWorks on [Docker Hub](https://hub.docker.com/u/mathworks). 4 | 5 | ## Technical Support 6 | If you require assistance or have a request for additional features or capabilities, please contact [MathWorks Technical Support](https://www.mathworks.com/support/contact_us.html). 7 | 8 | ---- 9 | 10 | Copyright 2019-2025 The MathWorks, Inc. 11 | 12 | ---- -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | Reporting Security Vulnerabilities 2 | ================================== 3 | If you believe you have discovered a security vulnerability, please report it to 4 | security@mathworks.com instead of GitHub. Please see 5 | [MathWorks Vulnerability Disclosure Policy for Security Researchers](https://www.mathworks.com/company/aboutus/policies_statements/vulnerability-disclosure-policy.html) 6 | for additional information. -------------------------------------------------------------------------------- /matlab-deps/r2019b/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:11.8.0-base-ubuntu18.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | # Install the AWS CLI to use for staging input and output data 23 | RUN pip3 install awscli 24 | 25 | # Create directories for the MATLAB install and for the JobStorageLocation 26 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 27 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 28 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 29 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 30 | 31 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 32 | # while running MATLAB. 33 | WORKDIR ${JOB_STORAGE_LOCATION} 34 | 35 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 36 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 37 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 38 | -------------------------------------------------------------------------------- /matlab-deps/r2019b/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates csh g++ gcc gfortran libasound2 libatk1.0-0 libavcodec-extra57 libavformat57 libc6 libcairo-gobject2 libcairo2 libcups2 libdbus-1-3 libdbus-glib-1-2 libfontconfig1 libgconf-2-4 libgdk-pixbuf2.0-0 libgnomevfs2-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libidl-2-0 libnss3 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython2.7 libpython3.6 libpython3.7 libselinux1 libsm6 libsndfile1 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxss1 libxt6 libxtst6 libxxf86vm1 locales locales-all procps python3 python3-pip sudo unzip wget xkb-data zip zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2019b/ubuntu18.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 The MathWorks, Inc. 2 | 3 | FROM ubuntu:18.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | COPY base-dependencies.txt /tmp/base-dependencies.txt 8 | 9 | RUN export DEBIAN_FRONTEND=noninteractive \ 10 | && apt-get update \ 11 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 12 | && apt-get clean && apt-get -y autoremove \ 13 | && rm -rf /var/lib/apt/lists/* 14 | 15 | # Uncomment the following RUN apt-get statement to install extended locale support for MATLAB 16 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y locales locales-all 17 | 18 | # Uncomment the following RUN ln -s statement if you will be running the MATLAB 19 | # license manager INSIDE the container. 20 | #RUN ln -s ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 21 | 22 | # Uncomment the following RUN apt-get statement if you will be using Simulink 23 | # code generation capabilities, or if you will be using mex with gcc, g++, 24 | # or gfortran. 25 | # 26 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y gcc g++ gfortran 27 | 28 | # Uncomment the following RUN apt-get statement to enable running a program 29 | # that makes use of MATLAB's Engine API for C and Fortran 30 | # https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 31 | # 32 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y csh 33 | 34 | # Uncomment ALL of the following RUN apt-get statement to enable the playing of media files 35 | # (mp3, mp4, etc.) from within MATLAB. 36 | # 37 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y libgstreamer1.0-0 \ 38 | # gstreamer1.0-tools \ 39 | # gstreamer1.0-libav \ 40 | # gstreamer1.0-plugins-base \ 41 | # gstreamer1.0-plugins-good \ 42 | # gstreamer1.0-plugins-bad \ 43 | # gstreamer1.0-plugins-ugly \ 44 | # gstreamer1.0-doc 45 | 46 | # Uncomment the following RUN apt-get statement if you will be using the 32-bit tcc compiler 47 | # used in the Polyspace product line. 48 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y libc6-i386 49 | -------------------------------------------------------------------------------- /matlab-deps/r2019b/ubuntu18.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates libasound2 libatk1.0-0 libavcodec-extra57 libavformat57 libc6 libcairo-gobject2 libcairo2 libcups2 libdbus-1-3 libdbus-glib-1-2 libfontconfig1 libgconf-2-4 libgdk-pixbuf2.0-0 libgnomevfs2-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libidl-2-0 libnss3 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython2.7 libpython3.6 libpython3.7 libselinux1 libsm6 libsndfile1 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxss1 libxt6 libxtst6 libxxf86vm1 procps sudo unzip wget xkb-data zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2020a/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:11.8.0-base-ubuntu18.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | # Install the AWS CLI to use for staging input and output data 23 | RUN pip3 install awscli 24 | 25 | # Create directories for the MATLAB install and for the JobStorageLocation 26 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 27 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 28 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 29 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 30 | 31 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 32 | # while running MATLAB. 33 | WORKDIR ${JOB_STORAGE_LOCATION} 34 | 35 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 36 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 37 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 38 | -------------------------------------------------------------------------------- /matlab-deps/r2020a/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates csh g++ gcc gfortran libasound2 libatk1.0-0 libavcodec-extra57 libavformat57 libc6 libcairo-gobject2 libcairo2 libcups2 libdbus-1-3 libfontconfig1 libgdk-pixbuf2.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libnspr4 libnss3 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython2.7 libpython3.6 libpython3.7 libselinux1 libsm6 libsndfile1 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 libxtst6 libxxf86vm1 locales locales locales-all locales-all procps python3 python3-pip sudo unzip wget xkb-data zip zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2020a/ubuntu18.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 The MathWorks, Inc. 2 | 3 | FROM ubuntu:18.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | COPY base-dependencies.txt /tmp/base-dependencies.txt 8 | 9 | RUN export DEBIAN_FRONTEND=noninteractive \ 10 | && apt-get update \ 11 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 12 | && apt-get clean && apt-get -y autoremove \ 13 | && rm -rf /var/lib/apt/lists/* 14 | 15 | # Uncomment the following RUN apt-get statement to install extended locale support for MATLAB 16 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y locales locales-all 17 | 18 | # Uncomment the following RUN ln -s statement if you will be running the MATLAB 19 | # license manager INSIDE the container. 20 | #RUN ln -s ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 21 | 22 | # Uncomment the following RUN apt-get statement if you will be using Simulink 23 | # code generation capabilities, or if you will be using mex with gcc, g++, 24 | # or gfortran. 25 | # 26 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y gcc g++ gfortran 27 | 28 | # Uncomment the following RUN apt-get statement to enable running a program 29 | # that makes use of MATLAB's Engine API for C and Fortran 30 | # https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 31 | # 32 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y csh 33 | 34 | # Uncomment ALL of the following RUN apt-get statement to enable the playing of media files 35 | # (mp3, mp4, etc.) from within MATLAB. 36 | # 37 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y libgstreamer1.0-0 \ 38 | # gstreamer1.0-tools \ 39 | # gstreamer1.0-libav \ 40 | # gstreamer1.0-plugins-base \ 41 | # gstreamer1.0-plugins-good \ 42 | # gstreamer1.0-plugins-bad \ 43 | # gstreamer1.0-plugins-ugly \ 44 | # gstreamer1.0-doc 45 | 46 | # Uncomment the following RUN apt-get statement if you will be using the 32-bit tcc compiler 47 | # used in the Polyspace product line. 48 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y libc6-i386 49 | -------------------------------------------------------------------------------- /matlab-deps/r2020a/ubuntu18.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates libasound2 libatk1.0-0 libavcodec-extra57 libavformat57 libc6 libcairo-gobject2 libcairo2 libcups2 libdbus-1-3 libfontconfig1 libgdk-pixbuf2.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libnspr4 libnss3 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython2.7 libpython3.6 libpython3.7 libselinux1 libsm6 libsndfile1 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 libxtst6 libxxf86vm1 locales locales-all procps sudo unzip wget xkb-data zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2020b/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:11.8.0-base-ubuntu20.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | # Install the AWS CLI to use for staging input and output data 23 | RUN pip3 install awscli 24 | 25 | # Create directories for the MATLAB install and for the JobStorageLocation 26 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 27 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 28 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 29 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 30 | 31 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 32 | # while running MATLAB. 33 | WORKDIR ${JOB_STORAGE_LOCATION} 34 | 35 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 36 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 37 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 38 | -------------------------------------------------------------------------------- /matlab-deps/r2020b/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates csh g++ gcc gfortran libasound2 libatk1.0-0 libc6 libcairo-gobject2 libcairo2 libcrypt1 libcups2 libdbus-1-3 libfontconfig1 libgdk-pixbuf2.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libnspr4 libnss3 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython2.7 libpython3.8 libselinux1 libsm6 libsndfile1 libtcl8.6 libuuid1 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 libxtst6 libxxf86vm1 locales locales-all procps python3 python3-pip sudo wget xkb-data zip zlib1g unzip -------------------------------------------------------------------------------- /matlab-deps/r2020b/ubuntu20.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 The MathWorks, Inc. 2 | 3 | FROM ubuntu:20.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | COPY base-dependencies.txt /tmp/base-dependencies.txt 8 | 9 | RUN export DEBIAN_FRONTEND=noninteractive \ 10 | && apt-get update \ 11 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 12 | && apt-get clean && apt-get -y autoremove \ 13 | && rm -rf /var/lib/apt/lists/* 14 | 15 | # Uncomment the following RUN apt-get statement if you will be using Simulink 16 | # code generation capabilities, or if you will be compiling your own mex files 17 | # with gcc, g++, or gfortran. 18 | # 19 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y gcc g++ gfortran 20 | 21 | # Uncomment the following RUN apt-get statement to enable running a program 22 | # that makes use of MATLAB's Engine API for C and Fortran 23 | # https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 24 | # 25 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y csh 26 | 27 | # Uncomment ALL of the following RUN apt-get statement to enable the playing of media files 28 | # (mp3, mp4, etc.) from within MATLAB. 29 | # 30 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install --no-install-recommends -y libgstreamer1.0-0 \ 31 | # gstreamer1.0-tools \ 32 | # gstreamer1.0-libav \ 33 | # gstreamer1.0-plugins-base \ 34 | # gstreamer1.0-plugins-good \ 35 | # gstreamer1.0-plugins-bad \ 36 | # gstreamer1.0-plugins-ugly 37 | 38 | # Uncomment the following line if you require the fuse filesystem 39 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install --no-install-recommends -y libfuse2 40 | 41 | # Uncomment the following line if you require network tools 42 | # RUN apt-get install --no-install-recommends -y net-tools 43 | 44 | # Uncomment the following line if you require firefox 45 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get install --no-install-recommends -y firefox 46 | 47 | # Uncomment to resolve any license manager issues 48 | # RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 49 | -------------------------------------------------------------------------------- /matlab-deps/r2020b/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates libasound2 libatk1.0-0 libc6 libcairo-gobject2 libcairo2 libcrypt1 libcups2 libdbus-1-3 libfontconfig1 libgdk-pixbuf2.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libnspr4 libnss3 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython2.7 libpython3.8 libselinux1 libsm6 libsndfile1 libtcl8.6 libuuid1 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 libxtst6 libxxf86vm1 locales locales-all procps sudo unzip wget xkb-data zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2021a/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:11.8.0-base-ubuntu20.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | # Install the AWS CLI to use for staging input and output data 23 | RUN pip3 install awscli 24 | 25 | # Create directories for the MATLAB install and for the JobStorageLocation 26 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 27 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 28 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 29 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 30 | 31 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 32 | # while running MATLAB. 33 | WORKDIR ${JOB_STORAGE_LOCATION} 34 | 35 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 36 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 37 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 38 | -------------------------------------------------------------------------------- /matlab-deps/r2021a/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates csh g++ gcc gfortran libasound2 libatk1.0-0 libc6 libcairo-gobject2 libcairo2 libcrypt1 libcups2 libdbus-1-3 libfontconfig1 libgdk-pixbuf2.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libnspr4 libnss3 libodbc1 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython2.7 libpython3.8 libselinux1 libsm6 libsndfile1 libuuid1 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 libxtst6 libxxf86vm1 locales locales-all make net-tools procps python3 python3-pip sudo tzdata unzip wget zip zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2021a/ubuntu20.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2024 The MathWorks, Inc. 2 | 3 | FROM ubuntu:20.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | COPY base-dependencies.txt /tmp/base-dependencies.txt 8 | 9 | RUN export DEBIAN_FRONTEND=noninteractive \ 10 | && apt-get update \ 11 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 12 | && apt-get clean && apt-get -y autoremove \ 13 | && rm -rf /var/lib/apt/lists/* 14 | 15 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 16 | 17 | # Uncomment the following RUN apt-get statement if you will be using Simulink 18 | # code generation capabilities, or if you will be compiling your own mex files 19 | # with gcc, g++, or gfortran. 20 | # 21 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y gcc g++ gfortran && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 22 | 23 | # Uncomment the following RUN apt-get statement to enable running a program 24 | # that makes use of MATLAB's Engine API for C and Fortran 25 | # https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 26 | # 27 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y csh && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 28 | 29 | # Uncomment ALL of the following RUN apt-get statement to enable the playing of media files 30 | # (mp3, mp4, etc.) from within MATLAB. 31 | # 32 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libgstreamer1.0-0 \ 33 | # gstreamer1.0-tools \ 34 | # gstreamer1.0-libav \ 35 | # gstreamer1.0-plugins-base \ 36 | # gstreamer1.0-plugins-good \ 37 | # gstreamer1.0-plugins-bad \ 38 | # gstreamer1.0-plugins-ugly \ 39 | # && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 40 | 41 | # Uncomment the following line if you require the fuse filesystem 42 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libfuse2 && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 43 | 44 | # Uncomment the following line if you require firefox 45 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y firefox && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 46 | 47 | # Uncomment to resolve license manager issues 48 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 49 | -------------------------------------------------------------------------------- /matlab-deps/r2021a/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates libasound2 libatk1.0-0 libc6 libcairo-gobject2 libcairo2 libcrypt1 libcups2 libdbus-1-3 libfontconfig1 libgdk-pixbuf2.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libnspr4 libnss3 libodbc1 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython2.7 libpython3.8 libselinux1 libsm6 libsndfile1 libuuid1 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 libxtst6 libxxf86vm1 locales locales-all make net-tools procps sudo tzdata unzip wget zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2021b/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:11.8.0-base-ubuntu20.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | # Install patched glibc - See https://github.com/mathworks/build-glibc-bz-19329-patch 23 | # Note: base-dependencies.txt includes libcrypt-dev and linux-libc-dev to enable installation of patched -dev packages 24 | WORKDIR /packages 25 | RUN export DEBIAN_FRONTEND=noninteractive &&\ 26 | wget -q https://github.com/mathworks/build-glibc-bz-19329-patch/releases/download/ubuntu-focal/all-packages.tar.gz &&\ 27 | tar -x -f all-packages.tar.gz \ 28 | --exclude glibc-*.deb \ 29 | --exclude libc6-dbg*.deb &&\ 30 | apt-get install --yes --no-install-recommends ./*.deb &&\ 31 | rm -fr /packages 32 | WORKDIR / 33 | 34 | # Install the AWS CLI to use for staging input and output data 35 | RUN pip3 install awscli 36 | 37 | # Create directories for the MATLAB install and for the JobStorageLocation 38 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 39 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 40 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 41 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 42 | 43 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 44 | # while running MATLAB. 45 | WORKDIR ${JOB_STORAGE_LOCATION} 46 | 47 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 48 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 49 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 50 | -------------------------------------------------------------------------------- /matlab-deps/r2021b/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates csh g++ gcc gfortran libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libc6 libcairo-gobject2 libcairo2 libcap2 libcrypt1 libcrypt-dev libcups2 libdbus-1-3 libdrm2 libfontconfig1 libgbm1 libgdk-pixbuf2.0-0 libglib2.0-0 libgomp1 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libnspr4 libnss3 libodbc1 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython3.9 libsm6 libsndfile1 libssl1.1 libuuid1 libx11-6 libx11-xcb1 libxcb-dri3-0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 libxtst6 libxxf86vm1 linux-libc-dev locales locales-all make net-tools procps python3 python3-pip sudo tzdata unzip wget zip zlib1g 2 | -------------------------------------------------------------------------------- /matlab-deps/r2021b/ubi8/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi8/ubi:8.5-226 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -s /etc/machine-id ] || dbus-uuidgen > /etc/machine-id 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | # Uncomment the following RUN yum statement to enable code generation capabilities, 17 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 18 | # 19 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 20 | 21 | # Uncomment the following line if you require the fuse filesystem 22 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 23 | 24 | # Uncomment to resolve certain license manager issues 25 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 26 | 27 | -------------------------------------------------------------------------------- /matlab-deps/r2021b/ubi8/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 at-spi2-atk.x86_64 at-spi2-core.x86_64 atk.x86_64 cairo.x86_64 cairo-gobject.x86_64 cups-libs.x86_64 dbus-libs.x86_64 fontconfig.x86_64 gdk-pixbuf2.x86_64 glib2.x86_64 glibc.x86_64 glibc-langpack-en.x86_64 glibc-locale-source.x86_64 gtk3.x86_64 libnsl2.x86_64 libSM.x86_64 libX11.x86_64 libX11-xcb.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXfixes.x86_64 libXft.x86_64 libXi.x86_64 libXinerama.x86_64 libXrandr.x86_64 libXrender.x86_64 libXt.x86_64 libXtst.x86_64 libXxf86vm.x86_64 libcap.x86_64 libdrm.x86_64 libgomp.x86_64 libsndfile.x86_64 libuuid.x86_64 libxcb.x86_64 libxcrypt.x86_64 make.x86_64 mesa-libgbm.x86_64 net-tools.x86_64 nspr.x86_64 nss.x86_64 nss-util.x86_64 openssl-libs.x86_64 pam.x86_64 pango.x86_64 procps-ng.x86_64 python39-libs.x86_64 sudo.x86_64 unixODBC.x86_64 unzip.x86_64 wget.x86_64 zlib.x86_64 2 | -------------------------------------------------------------------------------- /matlab-deps/r2021b/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libc6 libcairo2 libcairo-gobject2 libcap2 libcrypt1 libcrypt-dev libcups2 libdbus-1-3 libdrm2 libfontconfig1 libgbm1 libgdk-pixbuf2.0-0 libglib2.0-0 libgomp1 libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 libgtk-3-0 libnspr4 libnss3 libodbc1 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython3.9 libsm6 libsndfile1 libssl1.1 libuuid1 libx11-6 libx11-xcb1 libxcb-dri3-0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 libxtst6 libxxf86vm1 linux-libc-dev locales locales-all make net-tools procps sudo unzip wget zlib1g 2 | 3 | -------------------------------------------------------------------------------- /matlab-deps/r2022a/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:11.8.0-base-ubuntu20.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | # Install patched glibc - See https://github.com/mathworks/build-glibc-bz-19329-patch 23 | # Note: base-dependencies.txt includes libcrypt-dev and linux-libc-dev to enable installation of patched -dev packages 24 | WORKDIR /packages 25 | RUN export DEBIAN_FRONTEND=noninteractive && \ 26 | apt-get update && apt-get clean && apt-get autoremove && \ 27 | wget -q https://github.com/mathworks/build-glibc-bz-19329-patch/releases/download/ubuntu-focal/all-packages.tar.gz && \ 28 | tar -x -f all-packages.tar.gz \ 29 | --exclude glibc-*.deb \ 30 | --exclude libc6-dbg*.deb && \ 31 | apt-get install --yes --no-install-recommends ./*.deb && \ 32 | rm -fr /packages 33 | WORKDIR / 34 | 35 | # Install the AWS CLI to use for staging input and output data 36 | RUN pip3 install awscli 37 | 38 | # Create directories for the MATLAB install and for the JobStorageLocation 39 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 40 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 41 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 42 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 43 | 44 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 45 | # while running MATLAB. 46 | WORKDIR ${JOB_STORAGE_LOCATION} 47 | 48 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 49 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 50 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 51 | -------------------------------------------------------------------------------- /matlab-deps/r2022a/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates csh g++ gcc gfortran libasound2 libc6 libcairo-gobject2 libcairo2 libcap2 libcrypt1 libcrypt-dev libcups2 libdbus-1-3 libdrm2 libfontconfig1 libgbm1 libgdk-pixbuf2.0-0 libgl1 libglib2.0-0 libgomp1 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libnspr4 libnss3 libodbc1 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython3.9 libsm6 libsndfile1 libuuid1 libx11-6 libx11-xcb1 libxcb-dri3-0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 libxtst6 libxxf86vm1 linux-libc-dev locales locales-all make net-tools procps python3 python3-pip sudo tzdata unzip wget zip zlib1g 2 | -------------------------------------------------------------------------------- /matlab-deps/r2022a/ubi8/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2022-2024 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi8/ubi:8.5-226 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -s /etc/machine-id ] || dbus-uuidgen > /etc/machine-id 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | # Uncomment the following RUN yum statement to enable code generation capabilities, 17 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 18 | # 19 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 20 | 21 | # Uncomment the following line if you require the fuse filesystem 22 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 23 | 24 | # Uncomment to resolve certain license manager issues 25 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 26 | 27 | -------------------------------------------------------------------------------- /matlab-deps/r2022a/ubi8/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 cairo.x86_64 cairo-gobject.x86_64 cups-libs.x86_64 dbus-libs.x86_64 fontconfig.x86_64 gdk-pixbuf2.x86_64 glib2.x86_64 glibc.x86_64 glibc-langpack-en.x86_64 glibc-locale-source.x86_64 gtk3.x86_64 libnsl2.x86_64 libSM.x86_64 libX11.x86_64 libX11-xcb.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXfixes.x86_64 libXft.x86_64 libXi.x86_64 libXinerama.x86_64 libXrandr.x86_64 libXrender.x86_64 libXt.x86_64 libXtst.x86_64 libXxf86vm.x86_64 libcap.x86_64 libdrm.x86_64 libglvnd-glx.x86_64 libgomp.x86_64 libsndfile.x86_64 libuuid.x86_64 libxcb.x86_64 libxcrypt.x86_64 make.x86_64 mesa-libgbm.x86_64 net-tools.x86_64 nspr.x86_64 nss.x86_64 nss-util.x86_64 pam.x86_64 pango.x86_64 procps-ng.x86_64 python39-libs.x86_64 sudo.x86_64 unixODBC.x86_64 unzip.x86_64 wget.x86_64 which.x86_64 zlib.x86_64 2 | -------------------------------------------------------------------------------- /matlab-deps/r2022a/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates libasound2 libc6 libcairo-gobject2 libcairo2 libcap2 libcrypt1 libcrypt-dev libcups2 libdbus-1-3 libdrm2 libfontconfig1 libgbm1 libgdk-pixbuf2.0-0 libgl1 libglib2.0-0 libgomp1 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libnspr4 libnss3 libodbc1 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython3.9 libsm6 libsndfile1 libuuid1 libx11-6 libx11-xcb1 libxcb-dri3-0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 libxtst6 libxxf86vm1 linux-libc-dev locales locales-all make net-tools procps sudo unzip wget zlib1g 2 | -------------------------------------------------------------------------------- /matlab-deps/r2022b/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:11.8.0-base-ubuntu20.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | # Install patched glibc - See https://github.com/mathworks/build-glibc-bz-19329-patch 23 | # Note: base-dependencies.txt includes libcrypt-dev and linux-libc-dev to enable installation of patched -dev packages 24 | WORKDIR /packages 25 | RUN export DEBIAN_FRONTEND=noninteractive && \ 26 | apt-get update && apt-get clean && apt-get autoremove && \ 27 | wget -q https://github.com/mathworks/build-glibc-bz-19329-patch/releases/download/ubuntu-focal/all-packages.tar.gz && \ 28 | tar -x -f all-packages.tar.gz \ 29 | --exclude glibc-*.deb \ 30 | --exclude libc6-dbg*.deb && \ 31 | apt-get install --yes --no-install-recommends --allow-downgrades ./*.deb && \ 32 | rm -fr /packages 33 | WORKDIR / 34 | 35 | # Install the AWS CLI to use for staging input and output data 36 | RUN pip3 install awscli 37 | 38 | # Create directories for the MATLAB install and for the JobStorageLocation 39 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 40 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 41 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 42 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 43 | 44 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 45 | # while running MATLAB. 46 | WORKDIR ${JOB_STORAGE_LOCATION} 47 | 48 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 49 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 50 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 51 | -------------------------------------------------------------------------------- /matlab-deps/r2022b/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates csh g++ gcc gfortran libasound2 libc6 libcairo-gobject2 libcairo2 libcap2 libcrypt1 libcrypt-dev libcups2 libdrm2 libgbm1 libgdk-pixbuf2.0-0 libgl1 libglib2.0-0 libgomp1 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libice6 libnspr4 libnss3 libodbc1 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libsndfile1 libsystemd0 libuuid1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxinerama1 libxrandr2 libxt6 libxtst6 libxxf86vm1 linux-libc-dev locales locales-all make net-tools procps python3 python3-pip sudo tzdata unzip wget zip zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2022b/ubi8/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2022 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi8/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -s /etc/machine-id ] || dbus-uuidgen > /etc/machine-id 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | # Uncomment the following RUN yum statement to enable code generation capabilities, 17 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 18 | # 19 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 20 | 21 | # Uncomment the following line if you require the fuse filesystem 22 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 23 | 24 | # Uncomment to resolve certain license manager issues 25 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 26 | 27 | -------------------------------------------------------------------------------- /matlab-deps/r2022b/ubi8/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 cairo.x86_64 cairo-gobject.x86_64 cups-libs.x86_64 gdk-pixbuf2.x86_64 glib2.x86_64 glibc.x86_64 glibc-langpack-en.x86_64 glibc-locale-source.x86_64 gtk3.x86_64 libICE.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXfixes.x86_64 libXft.x86_64 libXinerama.x86_64 libXrandr.x86_64 libXt.x86_64 libXtst.x86_64 libXxf86vm.x86_64 libcap.x86_64 libdrm.x86_64 libglvnd-glx.x86_64 libgomp.x86_64 libsndfile.x86_64 libuuid.x86_64 libxcrypt.x86_64 make.x86_64 mesa-libgbm.x86_64 net-tools.x86_64 nspr.x86_64 nss.x86_64 nss-util.x86_64 pam.x86_64 pango.x86_64 procps-ng.x86_64 sudo.x86_64 systemd-libs.x86_64 unixODBC.x86_64 unzip.x86_64 which.x86_64 zlib.x86_64 -------------------------------------------------------------------------------- /matlab-deps/r2022b/ubi9/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi9/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 14 | 15 | # Uncomment the following RUN yum statement to enable code generation capabilities, 16 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 17 | # 18 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 19 | 20 | # Uncomment the following line if you require the fuse filesystem 21 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 22 | 23 | # Uncomment to resolve certain license manager issues 24 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 25 | 26 | -------------------------------------------------------------------------------- /matlab-deps/r2022b/ubi9/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 cairo-gobject.x86_64 cairo.x86_64 cups-libs.x86_64 gdk-pixbuf2.x86_64 glib2.x86_64 glibc-langpack-en.x86_64 glibc-locale-source.x86_64 glibc.x86_64 gstreamer1-plugins-base.x86_64 gstreamer1.x86_64 gtk3.x86_64 libcap.x86_64 libdrm.x86_64 libglvnd-glx.x86_64 libgomp.x86_64 libICE.x86_64 libsndfile.x86_64 libuuid.x86_64 libXcomposite.x86_64 libxcrypt-compat.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXfixes.x86_64 libXft.x86_64 libXinerama.x86_64 libXrandr.x86_64 libXt.x86_64 libXtst.x86_64 libXxf86vm.x86_64 make.x86_64 mesa-libgbm.x86_64 net-tools.x86_64 nspr.x86_64 nss-util.x86_64 nss.x86_64 pam.x86_64 pango.x86_64 procps-ng.x86_64 sudo.x86_64 unixODBC.x86_64 unzip.x86_64 which.x86_64 zlib.x86_64 -------------------------------------------------------------------------------- /matlab-deps/r2022b/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates libasound2 libc6 libcairo-gobject2 libcairo2 libcap2 libcrypt1 libcrypt-dev libcups2 libdrm2 libgbm1 libgdk-pixbuf2.0-0 libgl1 libglib2.0-0 libgomp1 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libice6 libnspr4 libnss3 libodbc1 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libsndfile1 libsystemd0 libuuid1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxinerama1 libxrandr2 libxt6 libxtst6 libxxf86vm1 linux-libc-dev locales locales-all make net-tools procps sudo unzip wget zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2022b/ubuntu22.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | FROM ubuntu:22.04 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN export DEBIAN_FRONTEND=noninteractive \ 9 | && apt-get update \ 10 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 11 | && apt-get clean && apt-get -y autoremove \ 12 | && rm -rf /var/lib/apt/lists/* 13 | 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | # Uncomment the following RUN apt-get statement if you will be using Simulink 17 | # code generation capabilities, or if you will be compiling your own mex files 18 | # with gcc, g++, or gfortran. 19 | # 20 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y gcc g++ gfortran && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 21 | 22 | # Uncomment the following RUN apt-get statement to enable running a program 23 | # that makes use of MATLAB's Engine API for C and Fortran 24 | # https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 25 | # 26 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y csh && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 27 | 28 | # Uncomment ALL of the following RUN apt-get statement to enable the playing of media files 29 | # (mp3, mp4, etc.) from within MATLAB. 30 | # 31 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libgstreamer1.0-0 \ 32 | # gstreamer1.0-tools \ 33 | # gstreamer1.0-libav \ 34 | # gstreamer1.0-plugins-base \ 35 | # gstreamer1.0-plugins-good \ 36 | # gstreamer1.0-plugins-bad \ 37 | # gstreamer1.0-plugins-ugly \ 38 | # && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 39 | 40 | # Uncomment the following line if you require the fuse filesystem 41 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libfuse2 && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 42 | 43 | # Uncomment the following line if you require firefox 44 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y firefox && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 45 | 46 | # Uncomment to resolve any license manager issues 47 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 48 | -------------------------------------------------------------------------------- /matlab-deps/r2022b/ubuntu22.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates libasound2 libc6 libcairo-gobject2 libcairo2 libcap2 libcrypt1 libcups2 libdrm2 libgbm1 libgdk-pixbuf-2.0-0 libgl1 libglib2.0-0 libgomp1 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libice6 libnspr4 libnss3 libodbc2 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython3.10 libsndfile1 libuhd4.1.0 libuuid1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxinerama1 libxrandr2 libxt6 libxtst6 libxxf86vm1 locales locales-all make net-tools procps sudo unzip zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2023a/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:11.8.0-base-ubuntu20.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | # Install patched glibc - See https://github.com/mathworks/build-glibc-bz-19329-patch 23 | # Note: base-dependencies.txt includes libcrypt-dev and linux-libc-dev to enable installation of patched -dev packages 24 | WORKDIR /packages 25 | RUN export DEBIAN_FRONTEND=noninteractive && \ 26 | apt-get update && apt-get clean && apt-get autoremove && \ 27 | wget -q https://github.com/mathworks/build-glibc-bz-19329-patch/releases/download/ubuntu-focal/all-packages.tar.gz && \ 28 | tar -x -f all-packages.tar.gz \ 29 | --exclude glibc-*.deb \ 30 | --exclude libc6-dbg*.deb && \ 31 | apt-get install --yes --no-install-recommends --allow-downgrades ./*.deb && \ 32 | rm -fr /packages 33 | WORKDIR / 34 | 35 | # Install the AWS CLI to use for staging input and output data 36 | RUN pip3 install awscli 37 | 38 | # Create directories for the MATLAB install and for the JobStorageLocation 39 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 40 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 41 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 42 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 43 | 44 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 45 | # while running MATLAB. 46 | WORKDIR ${JOB_STORAGE_LOCATION} 47 | 48 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 49 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 50 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 51 | -------------------------------------------------------------------------------- /matlab-deps/r2023a/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates csh g++ gcc gfortran libasound2 libc6 libcairo2 libcairo-gobject2 libcap2 libcrypt1 libcrypt-dev libcups2 libdrm2 libdw1 libgbm1 libgdk-pixbuf2.0-0 libgl1 libglib2.0-0 libgomp1 libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 libgtk-3-0 libice6 libnspr4 libnss3 libodbc1 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libsndfile1 libsystemd0 libuuid1 libwayland-client0 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxinerama1 libxrandr2 libxt6 libxtst6 libxxf86vm1 linux-libc-dev locales locales-all make net-tools odbcinst1debian2 procps python3 python3-pip sudo unzip wget zip zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2023a/ubi8/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi8/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -s /etc/machine-id ] || dbus-uuidgen > /etc/machine-id 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | # Uncomment the following RUN yum statement to enable code generation capabilities, 17 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 18 | # 19 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 20 | 21 | # Uncomment the following line if you require the fuse filesystem 22 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 23 | 24 | # Uncomment to resolve certain license manager issues 25 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 26 | 27 | -------------------------------------------------------------------------------- /matlab-deps/r2023a/ubi8/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 cairo.x86_64 cairo-gobject.x86_64 cups-libs.x86_64 elfutils-libs.x86_64 gdk-pixbuf2.x86_64 glib2.x86_64 glibc.x86_64 glibc-langpack-en.x86_64 glibc-locale-source.x86_64 gtk3.x86_64 libcap.x86_64 libdrm.x86_64 libglvnd-glx.x86_64 libgomp.x86_64 libICE.x86_64 libsndfile.x86_64 libuuid.x86_64 libwayland-client.x86_64 libXcomposite.x86_64 libxcrypt.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXfixes.x86_64 libXft.x86_64 libXinerama.x86_64 libXrandr.x86_64 libXt.x86_64 libXtst.x86_64 libXxf86vm.x86_64 make.x86_64 mesa-libgbm.x86_64 net-tools.x86_64 nspr.x86_64 nss.x86_64 nss-util.x86_64 pam.x86_64 pango.x86_64 procps-ng.x86_64 sudo.x86_64 systemd-libs.x86_64 unixODBC.x86_64 unzip.x86_64 which.x86_64 zlib.x86_64 -------------------------------------------------------------------------------- /matlab-deps/r2023a/ubi9/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi9/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 14 | 15 | # Uncomment the following RUN yum statement to enable code generation capabilities, 16 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 17 | # 18 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 19 | 20 | # Uncomment the following line if you require the fuse filesystem 21 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 22 | 23 | # Uncomment to resolve certain license manager issues 24 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 25 | 26 | -------------------------------------------------------------------------------- /matlab-deps/r2023a/ubi9/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 cairo-gobject.x86_64 cairo.x86_64 cups-libs.x86_64 gdk-pixbuf2.x86_64 glib2.x86_64 glibc-langpack-en.x86_64 glibc-locale-source.x86_64 glibc.x86_64 gstreamer1-plugins-base.x86_64 gstreamer1.x86_64 gtk3.x86_64 libcap.x86_64 libdrm.x86_64 libglvnd-glx.x86_64 libICE.x86_64 libsndfile.x86_64 libuuid.x86_64 libwayland-client.x86_64 libXcomposite.x86_64 libxcrypt-compat.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXfixes.x86_64 libXft.x86_64 libXinerama.x86_64 libXrandr.x86_64 libXt.x86_64 libXtst.x86_64 libXxf86vm.x86_64 make.x86_64 mesa-libgbm.x86_64 net-tools.x86_64 nspr.x86_64 nss-util.x86_64 nss.x86_64 pam.x86_64 pango.x86_64 procps-ng.x86_64 sudo.x86_64 unixODBC.x86_64 unzip.x86_64 which.x86_64 zlib.x86_64 -------------------------------------------------------------------------------- /matlab-deps/r2023a/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates libasound2 libc6 libcairo2 libcairo-gobject2 libcap2 libcrypt1 libcrypt-dev libcups2 libdrm2 libdw1 libgbm1 libgdk-pixbuf2.0-0 libgl1 libglib2.0-0 libgomp1 libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 libgtk-3-0 libice6 libnspr4 libnss3 libodbc1 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libsndfile1 libsystemd0 libuuid1 libwayland-client0 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxinerama1 libxrandr2 libxt6 libxtst6 libxxf86vm1 linux-libc-dev locales locales-all make net-tools odbcinst1debian2 procps sudo unzip wget zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2023a/ubuntu22.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | FROM ubuntu:22.04 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN export DEBIAN_FRONTEND=noninteractive \ 9 | && apt-get update \ 10 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 11 | && apt-get clean && apt-get -y autoremove \ 12 | && rm -rf /var/lib/apt/lists/* 13 | 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | # Uncomment the following RUN apt-get statement if you will be using Simulink 17 | # code generation capabilities, or if you will be compiling your own mex files 18 | # with gcc, g++, or gfortran. 19 | # 20 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y gcc g++ gfortran && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 21 | 22 | # Uncomment the following RUN apt-get statement to enable running a program 23 | # that makes use of MATLAB's Engine API for C and Fortran 24 | # https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 25 | # 26 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y csh && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 27 | 28 | # Uncomment ALL of the following RUN apt-get statement to enable the playing of media files 29 | # (mp3, mp4, etc.) from within MATLAB. 30 | # 31 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libgstreamer1.0-0 \ 32 | # gstreamer1.0-tools \ 33 | # gstreamer1.0-libav \ 34 | # gstreamer1.0-plugins-base \ 35 | # gstreamer1.0-plugins-good \ 36 | # gstreamer1.0-plugins-bad \ 37 | # gstreamer1.0-plugins-ugly \ 38 | # && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 39 | 40 | # Uncomment the following line if you require the fuse filesystem 41 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libfuse2 && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 42 | 43 | # Uncomment the following line if you require firefox 44 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y firefox && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 45 | 46 | # Uncomment to resolve any license manager issues 47 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 48 | -------------------------------------------------------------------------------- /matlab-deps/r2023a/ubuntu22.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates libasound2 libc6 libcairo-gobject2 libcairo2 libcap2 libcrypt1 libcups2 libdrm2 libgbm1 libgdk-pixbuf-2.0-0 libgl1 libglib2.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libice6 libnspr4 libnss3 libodbc2 libodbcinst2 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpython3.10 libsndfile1 libuuid1 libwayland-client0 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxinerama1 libxrandr2 libxt6 libxtst6 libxxf86vm1 locales locales-all make net-tools procps sudo unzip zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2023b/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:11.8.0-base-ubuntu22.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | WORKDIR / 23 | 24 | # Install the AWS CLI to use for staging input and output data 25 | RUN pip3 install awscli 26 | 27 | # Create directories for the MATLAB install and for the JobStorageLocation 28 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 29 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 30 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 31 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 32 | 33 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 34 | # while running MATLAB. 35 | WORKDIR ${JOB_STORAGE_LOCATION} 36 | 37 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 38 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 39 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 40 | -------------------------------------------------------------------------------- /matlab-deps/r2023b/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | csh 3 | g++ 4 | gcc 5 | gfortran 6 | libasound2 7 | libc6 8 | libcairo-gobject2 9 | libcairo2 10 | libcap2 11 | libcups2 12 | libdrm2 13 | libgbm1 14 | libgdk-pixbuf-2.0-0 15 | libgl1 16 | libglib2.0-0 17 | libgstreamer-plugins-base1.0-0 18 | libgstreamer1.0-0 19 | libgtk-3-0 20 | libice6 21 | libltdl7 22 | libnspr4 23 | libnss3 24 | libpam0g 25 | libpango-1.0-0 26 | libpangocairo-1.0-0 27 | libpangoft2-1.0-0 28 | libsndfile1 29 | libuuid1 30 | libwayland-client0 31 | libxcomposite1 32 | libxcursor1 33 | libxdamage1 34 | libxfixes3 35 | libxft2 36 | libxinerama1 37 | libxrandr2 38 | libxt6 39 | libxtst6 40 | libxxf86vm1 41 | locales 42 | locales-all 43 | make 44 | net-tools 45 | procps 46 | python3 47 | python3-pip 48 | sudo 49 | unzip 50 | zip 51 | zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2023b/ubi8/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi8/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -s /etc/machine-id ] || dbus-uuidgen > /etc/machine-id 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | # Uncomment the following RUN yum statement to enable code generation capabilities, 17 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 18 | # 19 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 20 | 21 | # Uncomment the following line if you require the fuse filesystem 22 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 23 | 24 | # Uncomment to resolve certain license manager issues 25 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 26 | 27 | -------------------------------------------------------------------------------- /matlab-deps/r2023b/ubi8/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 2 | cairo.x86_64 3 | cairo-gobject.x86_64 4 | cups-libs.x86_64 5 | gdk-pixbuf2.x86_64 6 | glib2.x86_64 7 | glibc.x86_64 8 | glibc-langpack-en.x86_64 9 | glibc-locale-source.x86_64 10 | gtk3.x86_64 11 | libICE.x86_64 12 | libXcomposite.x86_64 13 | libXcursor.x86_64 14 | libXdamage.x86_64 15 | libXfixes.x86_64 16 | libXft.x86_64 17 | libXinerama.x86_64 18 | libXrandr.x86_64 19 | libXt.x86_64 20 | libXtst.x86_64 21 | libXxf86vm.x86_64 22 | libcap.x86_64 23 | libdrm.x86_64 24 | libglvnd-glx.x86_64 25 | libsndfile.x86_64 26 | libtool-ltdl.x86_64 27 | libuuid.x86_64 28 | libwayland-client.x86_64 29 | make.x86_64 30 | mesa-libgbm.x86_64 31 | net-tools.x86_64 32 | nspr.x86_64 33 | nss.x86_64 34 | nss-util.x86_64 35 | pam.x86_64 36 | pango.x86_64 37 | procps-ng.x86_64 38 | sudo.x86_64 39 | unzip.x86_64 40 | which.x86_64 41 | zlib.x86_64 42 | -------------------------------------------------------------------------------- /matlab-deps/r2023b/ubi9/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi9/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 14 | 15 | # Uncomment the following RUN yum statement to enable code generation capabilities, 16 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 17 | # 18 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 19 | 20 | # Uncomment the following line if you require the fuse filesystem 21 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 22 | 23 | # Uncomment to resolve certain license manager issues 24 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 25 | 26 | -------------------------------------------------------------------------------- /matlab-deps/r2023b/ubi9/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 2 | cairo.x86_64 3 | cairo-gobject.x86_64 4 | cups-libs.x86_64 5 | gdk-pixbuf2.x86_64 6 | glib2.x86_64 7 | glibc.x86_64 8 | glibc-langpack-en.x86_64 9 | glibc-locale-source.x86_64 10 | gstreamer1.x86_64 11 | gstreamer1-plugins-base.x86_64 12 | gtk3.x86_64 13 | libICE.x86_64 14 | libXcomposite.x86_64 15 | libXcursor.x86_64 16 | libXdamage.x86_64 17 | libXfixes.x86_64 18 | libXft.x86_64 19 | libXinerama.x86_64 20 | libXrandr.x86_64 21 | libXt.x86_64 22 | libXtst.x86_64 23 | libXxf86vm.x86_64 24 | libcap.x86_64 25 | libdrm.x86_64 26 | libglvnd-glx.x86_64 27 | libsndfile.x86_64 28 | libtool-ltdl.x86_64 29 | libuuid.x86_64 30 | libwayland-client.x86_64 31 | make.x86_64 32 | mesa-libgbm.x86_64 33 | net-tools.x86_64 34 | nspr.x86_64 35 | nss.x86_64 36 | nss-util.x86_64 37 | pam.x86_64 38 | pango.x86_64 39 | procps-ng.x86_64 40 | sudo.x86_64 41 | unzip.x86_64 42 | which.x86_64 43 | zlib.x86_64 -------------------------------------------------------------------------------- /matlab-deps/r2023b/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | libasound2 3 | libc6 4 | libcairo-gobject2 5 | libcairo2 6 | libcap2 7 | libcrypt-dev 8 | libcups2 9 | libdrm2 10 | libgbm1 11 | libgdk-pixbuf2.0-0 12 | libgl1 13 | libglib2.0-0 14 | libgstreamer-plugins-base1.0-0 15 | libgstreamer1.0-0 16 | libgtk-3-0 17 | libice6 18 | libltdl7 19 | libnspr4 20 | libnss3 21 | libpam0g 22 | libpango-1.0-0 23 | libpangocairo-1.0-0 24 | libpangoft2-1.0-0 25 | libsndfile1 26 | libuuid1 27 | libwayland-client0 28 | libxcomposite1 29 | libxcursor1 30 | libxdamage1 31 | libxfixes3 32 | libxft2 33 | libxinerama1 34 | libxrandr2 35 | libxt6 36 | libxtst6 37 | libxxf86vm1 38 | linux-libc-dev 39 | locales 40 | locales-all 41 | make 42 | net-tools 43 | procps 44 | sudo 45 | unzip 46 | wget 47 | zlib1g -------------------------------------------------------------------------------- /matlab-deps/r2023b/ubuntu22.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | FROM ubuntu:22.04 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN export DEBIAN_FRONTEND=noninteractive \ 9 | && apt-get update \ 10 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 11 | && apt-get clean && apt-get -y autoremove \ 12 | && rm -rf /var/lib/apt/lists/* 13 | 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | WORKDIR / 17 | 18 | # Uncomment the following RUN apt-get statement if you will be using Simulink 19 | # code generation capabilities, or if you will be compiling your own mex files 20 | # with gcc, g++, or gfortran. 21 | # 22 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y gcc g++ gfortran && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 23 | 24 | # Uncomment the following RUN apt-get statement to enable running a program 25 | # that makes use of MATLAB's Engine API for C and Fortran 26 | # https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 27 | # 28 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y csh && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 29 | 30 | # Uncomment ALL of the following RUN apt-get statement to enable the playing of media files 31 | # (mp3, mp4, etc.) from within MATLAB. 32 | # 33 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libgstreamer1.0-0 \ 34 | # gstreamer1.0-tools \ 35 | # gstreamer1.0-libav \ 36 | # gstreamer1.0-plugins-base \ 37 | # gstreamer1.0-plugins-good \ 38 | # gstreamer1.0-plugins-bad \ 39 | # gstreamer1.0-plugins-ugly \ 40 | # && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 41 | 42 | # Uncomment the following line if you require the fuse filesystem 43 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libfuse2 && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 44 | 45 | # Uncomment the following line if you require firefox 46 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y firefox && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 47 | 48 | # Uncomment to resolve any license manager issues 49 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 50 | -------------------------------------------------------------------------------- /matlab-deps/r2023b/ubuntu22.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | libasound2 3 | libc6 4 | libcairo-gobject2 5 | libcairo2 6 | libcap2 7 | libcups2 8 | libdrm2 9 | libgbm1 10 | libgdk-pixbuf-2.0-0 11 | libgl1 12 | libglib2.0-0 13 | libgstreamer-plugins-base1.0-0 14 | libgstreamer1.0-0 15 | libgtk-3-0 16 | libice6 17 | libltdl7 18 | libnspr4 19 | libnss3 20 | libpam0g 21 | libpango-1.0-0 22 | libpangocairo-1.0-0 23 | libpangoft2-1.0-0 24 | libsndfile1 25 | libuuid1 26 | libwayland-client0 27 | libxcomposite1 28 | libxcursor1 29 | libxdamage1 30 | libxfixes3 31 | libxft2 32 | libxinerama1 33 | libxrandr2 34 | libxt6 35 | libxtst6 36 | libxxf86vm1 37 | locales 38 | locales-all 39 | make 40 | net-tools 41 | procps 42 | sudo 43 | unzip 44 | zlib1g 45 | -------------------------------------------------------------------------------- /matlab-deps/r2024a/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:12.2.2-base-ubuntu22.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | WORKDIR / 23 | 24 | # Install the AWS CLI to use for staging input and output data 25 | RUN pip3 install awscli 26 | 27 | # Create directories for the MATLAB install and for the JobStorageLocation 28 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 29 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 30 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 31 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 32 | 33 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 34 | # while running MATLAB. 35 | WORKDIR ${JOB_STORAGE_LOCATION} 36 | 37 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 38 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 39 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 40 | -------------------------------------------------------------------------------- /matlab-deps/r2024a/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | csh 3 | g++ 4 | gcc 5 | gfortran 6 | libasound2 7 | libc6 8 | libcairo-gobject2 9 | libcairo2 10 | libcap2 11 | libcups2 12 | libdrm2 13 | libfontconfig1 14 | libgbm1 15 | libgdk-pixbuf-2.0-0 16 | libgl1 17 | libglib2.0-0 18 | libgstreamer-plugins-base1.0-0 19 | libgstreamer1.0-0 20 | libgtk-3-0 21 | libice6 22 | libltdl7 23 | libnspr4 24 | libnss3 25 | libpam0g 26 | libpango-1.0-0 27 | libpangocairo-1.0-0 28 | libpangoft2-1.0-0 29 | libsndfile1 30 | libudev1 31 | libuuid1 32 | libwayland-client0 33 | libxcomposite1 34 | libxcursor1 35 | libxdamage1 36 | libxfixes3 37 | libxft2 38 | libxinerama1 39 | libxrandr2 40 | libxt6 41 | libxtst6 42 | libxxf86vm1 43 | locales 44 | locales-all 45 | make 46 | net-tools 47 | procps 48 | python3 49 | python3-pip 50 | sudo 51 | unzip 52 | zip 53 | zlib1g 54 | -------------------------------------------------------------------------------- /matlab-deps/r2024a/ubi8/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi8/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -s /etc/machine-id ] || dbus-uuidgen > /etc/machine-id 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | # Uncomment the following RUN yum statement to enable code generation capabilities, 17 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 18 | # 19 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 20 | 21 | # Uncomment the following line if you require the fuse filesystem 22 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 23 | 24 | # Uncomment to resolve certain license manager issues 25 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 26 | 27 | -------------------------------------------------------------------------------- /matlab-deps/r2024a/ubi8/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 2 | cairo.x86_64 3 | cairo-gobject.x86_64 4 | cups-libs.x86_64 5 | fontconfig.x86_64 6 | gdk-pixbuf2.x86_64 7 | glib2.x86_64 8 | glibc.x86_64 9 | glibc-langpack-en.x86_64 10 | glibc-locale-source.x86_64 11 | gtk3.x86_64 12 | libICE.x86_64 13 | libXcomposite.x86_64 14 | libXcursor.x86_64 15 | libXdamage.x86_64 16 | libXfixes.x86_64 17 | libXft.x86_64 18 | libXinerama.x86_64 19 | libXrandr.x86_64 20 | libXt.x86_64 21 | libXtst.x86_64 22 | libXxf86vm.x86_64 23 | libcap.x86_64 24 | libdrm.x86_64 25 | libglvnd-glx.x86_64 26 | libsndfile.x86_64 27 | libtool-ltdl.x86_64 28 | libuuid.x86_64 29 | libwayland-client.x86_64 30 | make.x86_64 31 | mesa-libgbm.x86_64 32 | net-tools.x86_64 33 | nspr.x86_64 34 | nss.x86_64 35 | nss-util.x86_64 36 | pam.x86_64 37 | pango.x86_64 38 | procps-ng.x86_64 39 | sudo.x86_64 40 | systemd-libs.x86_64 41 | unzip.x86_64 42 | which.x86_64 43 | zlib.x86_64 44 | -------------------------------------------------------------------------------- /matlab-deps/r2024a/ubi9/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi9/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 14 | 15 | # Uncomment the following RUN yum statement to enable code generation capabilities, 16 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 17 | # 18 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 19 | 20 | # Uncomment the following line if you require the fuse filesystem 21 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 22 | 23 | # Uncomment to resolve certain license manager issues 24 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 25 | 26 | -------------------------------------------------------------------------------- /matlab-deps/r2024a/ubi9/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 2 | cairo.x86_64 3 | cairo-gobject.x86_64 4 | cups-libs.x86_64 5 | fontconfig.x86_64 6 | gdk-pixbuf2.x86_64 7 | glib2.x86_64 8 | glibc.x86_64 9 | glibc-langpack-en.x86_64 10 | glibc-locale-source.x86_64 11 | gstreamer1.x86_64 12 | gstreamer1-plugins-base.x86_64 13 | gtk3.x86_64 14 | libICE.x86_64 15 | libXcomposite.x86_64 16 | libXcursor.x86_64 17 | libXdamage.x86_64 18 | libXfixes.x86_64 19 | libXft.x86_64 20 | libXinerama.x86_64 21 | libXrandr.x86_64 22 | libXt.x86_64 23 | libXtst.x86_64 24 | libXxf86vm.x86_64 25 | libcap.x86_64 26 | libdrm.x86_64 27 | libglvnd-glx.x86_64 28 | libsndfile.x86_64 29 | libtool-ltdl.x86_64 30 | libuuid.x86_64 31 | libwayland-client.x86_64 32 | make.x86_64 33 | mesa-libgbm.x86_64 34 | net-tools.x86_64 35 | nspr.x86_64 36 | nss.x86_64 37 | nss-util.x86_64 38 | pam.x86_64 39 | pango.x86_64 40 | procps-ng.x86_64 41 | sudo.x86_64 42 | systemd-libs.x86_64 43 | unzip.x86_64 44 | which.x86_64 45 | zlib.x86_64 46 | -------------------------------------------------------------------------------- /matlab-deps/r2024a/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | libasound2 3 | libc6 4 | libcairo-gobject2 5 | libcairo2 6 | libcap2 7 | libcups2 8 | libdrm2 9 | libfontconfig1 10 | libgbm1 11 | libgdk-pixbuf2.0-0 12 | libgl1 13 | libglib2.0-0 14 | libgstreamer-plugins-base1.0-0 15 | libgstreamer1.0-0 16 | libgtk-3-0 17 | libice6 18 | libltdl7 19 | libnspr4 20 | libnss3 21 | libpam0g 22 | libpango-1.0-0 23 | libpangocairo-1.0-0 24 | libpangoft2-1.0-0 25 | libsndfile1 26 | libudev1 27 | libuuid1 28 | libwayland-client0 29 | libxcomposite1 30 | libxcursor1 31 | libxdamage1 32 | libxfixes3 33 | libxft2 34 | libxinerama1 35 | libxrandr2 36 | libxt6 37 | libxtst6 38 | libxxf86vm1 39 | locales 40 | locales-all 41 | make 42 | net-tools 43 | procps 44 | sudo 45 | unzip 46 | zlib1g 47 | wget 48 | libcrypt-dev 49 | linux-libc-dev 50 | -------------------------------------------------------------------------------- /matlab-deps/r2024a/ubuntu22.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | FROM ubuntu:22.04 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN export DEBIAN_FRONTEND=noninteractive \ 9 | && apt-get update \ 10 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 11 | && apt-get clean && apt-get -y autoremove \ 12 | && rm -rf /var/lib/apt/lists/* 13 | 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | WORKDIR / 17 | 18 | # Uncomment the following RUN apt-get statement if you will be using Simulink 19 | # code generation capabilities, or if you will be compiling your own mex files 20 | # with gcc, g++, or gfortran. 21 | # 22 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y gcc g++ gfortran && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 23 | 24 | # Uncomment the following RUN apt-get statement to enable running a program 25 | # that makes use of MATLAB's Engine API for C and Fortran 26 | # https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 27 | # 28 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y csh && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 29 | 30 | # Uncomment ALL of the following RUN apt-get statement to enable the playing of media files 31 | # (mp3, mp4, etc.) from within MATLAB. 32 | # 33 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libgstreamer1.0-0 \ 34 | # gstreamer1.0-tools \ 35 | # gstreamer1.0-libav \ 36 | # gstreamer1.0-plugins-base \ 37 | # gstreamer1.0-plugins-good \ 38 | # gstreamer1.0-plugins-bad \ 39 | # gstreamer1.0-plugins-ugly \ 40 | # && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 41 | 42 | # Uncomment the following line if you require the fuse filesystem 43 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libfuse2 && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 44 | 45 | # Uncomment the following line if you require firefox 46 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y firefox && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 47 | 48 | # Uncomment to resolve any license manager issues 49 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 50 | -------------------------------------------------------------------------------- /matlab-deps/r2024a/ubuntu22.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | libasound2 3 | libc6 4 | libcairo-gobject2 5 | libcairo2 6 | libcap2 7 | libcups2 8 | libdrm2 9 | libfontconfig1 10 | libgbm1 11 | libgdk-pixbuf-2.0-0 12 | libgl1 13 | libglib2.0-0 14 | libgstreamer-plugins-base1.0-0 15 | libgstreamer1.0-0 16 | libgtk-3-0 17 | libice6 18 | libltdl7 19 | libnspr4 20 | libnss3 21 | libpam0g 22 | libpango-1.0-0 23 | libpangocairo-1.0-0 24 | libpangoft2-1.0-0 25 | libsndfile1 26 | libudev1 27 | libuuid1 28 | libwayland-client0 29 | libxcomposite1 30 | libxcursor1 31 | libxdamage1 32 | libxfixes3 33 | libxft2 34 | libxinerama1 35 | libxrandr2 36 | libxt6 37 | libxtst6 38 | libxxf86vm1 39 | locales 40 | locales-all 41 | make 42 | net-tools 43 | procps 44 | sudo 45 | unzip 46 | zlib1g 47 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:12.2.2-base-ubuntu22.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get upgrade -y \ 18 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 19 | && apt-get clean && apt-get -y autoremove \ 20 | && rm -rf /var/lib/apt/lists/* 21 | 22 | WORKDIR / 23 | 24 | # Install the AWS CLI to use for staging input and output data 25 | RUN pip3 install awscli 26 | 27 | # Create directories for the MATLAB install and for the JobStorageLocation 28 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 29 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 30 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 31 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 32 | 33 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 34 | # while running MATLAB. 35 | WORKDIR ${JOB_STORAGE_LOCATION} 36 | 37 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 38 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 39 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 40 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | libasound2 3 | libatomic1 4 | libc6 5 | libcairo-gobject2 6 | libcairo2 7 | libcap2 8 | libcrypt1 9 | libcups2 10 | libdrm2 11 | libfontconfig1 12 | libfribidi0 13 | libgbm1 14 | libgdk-pixbuf-2.0-0 15 | libgl1 16 | libglib2.0-0 17 | libgstreamer-plugins-base1.0-0 18 | libgstreamer1.0-0 19 | libgtk-3-0 20 | libice6 21 | libltdl7 22 | libmd0 23 | libnettle8 24 | libnspr4 25 | libnss3 26 | libpam0g 27 | libpango-1.0-0 28 | libpangocairo-1.0-0 29 | libpangoft2-1.0-0 30 | libpixman-1-0 31 | libsndfile1 32 | libtirpc3 33 | libudev1 34 | libuuid1 35 | libwayland-client0 36 | libxcomposite1 37 | libxcursor1 38 | libxdamage1 39 | libxfixes3 40 | libxfont2 41 | libxft2 42 | libxinerama1 43 | libxrandr2 44 | libxt6 45 | libxtst6 46 | libxxf86vm1 47 | locales 48 | locales-all 49 | make 50 | net-tools 51 | procps 52 | sudo 53 | unzip 54 | zlib1g 55 | csh 56 | g++ 57 | gcc 58 | gfortran 59 | python3 60 | python3-pip 61 | zip 62 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/ubi8/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi8/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -s /etc/machine-id ] || dbus-uuidgen > /etc/machine-id 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | # Uncomment the following RUN yum statement to enable code generation capabilities, 17 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 18 | # 19 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 20 | 21 | # Uncomment the following line if you require the fuse filesystem 22 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 23 | 24 | # Uncomment to resolve certain license manager issues 25 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 26 | 27 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/ubi8/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 2 | cairo.x86_64 3 | cairo-gobject.x86_64 4 | cups-libs.x86_64 5 | fontconfig.x86_64 6 | fribidi.x86_64 7 | gdk-pixbuf2.x86_64 8 | glib2.x86_64 9 | glibc.x86_64 10 | glibc-langpack-en.x86_64 11 | glibc-locale-source.x86_64 12 | gtk3.x86_64 13 | libICE.x86_64 14 | libXcomposite.x86_64 15 | libXcursor.x86_64 16 | libXdamage.x86_64 17 | libXfixes.x86_64 18 | libXft.x86_64 19 | libXinerama.x86_64 20 | libXrandr.x86_64 21 | libXt.x86_64 22 | libXtst.x86_64 23 | libXxf86vm.x86_64 24 | libatomic.x86_64 25 | libcap.x86_64 26 | libdrm.x86_64 27 | libglvnd-glx.x86_64 28 | libsndfile.x86_64 29 | libtirpc.x86_64 30 | libtool-ltdl.x86_64 31 | libuuid.x86_64 32 | libwayland-client.x86_64 33 | libxcrypt.x86_64 34 | make.x86_64 35 | mesa-libgbm.x86_64 36 | net-tools.x86_64 37 | nspr.x86_64 38 | nss.x86_64 39 | nss-util.x86_64 40 | pam.x86_64 41 | pango.x86_64 42 | pixman.x86_64 43 | procps-ng.x86_64 44 | sudo.x86_64 45 | systemd-libs.x86_64 46 | unzip.x86_64 47 | which.x86_64 48 | zlib.x86_64 49 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/ubi9/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi9/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG C 13 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 14 | 15 | # Uncomment the following RUN yum statement to enable code generation capabilities, 16 | # or if you will be compiling your own mex files with gcc, g++, or gfortran. 17 | # 18 | #RUN yum install -y gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_64 && yum --disableplugin=subscription-manager clean all -y 19 | 20 | # Uncomment the following line if you require the fuse filesystem 21 | #RUN yum install -y fuse-libs.x86_64 && yum --disableplugin=subscription-manager clean all -y 22 | 23 | # Uncomment to resolve certain license manager issues 24 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 25 | 26 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/ubi9/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 2 | cairo.x86_64 3 | cairo-gobject.x86_64 4 | cups-libs.x86_64 5 | fontconfig.x86_64 6 | fribidi.x86_64 7 | gdk-pixbuf2.x86_64 8 | glib2.x86_64 9 | glibc.x86_64 10 | glibc-langpack-en.x86_64 11 | glibc-locale-source.x86_64 12 | gstreamer1.x86_64 13 | gstreamer1-plugins-base.x86_64 14 | gtk3.x86_64 15 | libICE.x86_64 16 | libXcomposite.x86_64 17 | libXcursor.x86_64 18 | libXdamage.x86_64 19 | libXfixes.x86_64 20 | libXft.x86_64 21 | libXinerama.x86_64 22 | libXrandr.x86_64 23 | libXt.x86_64 24 | libXtst.x86_64 25 | libXxf86vm.x86_64 26 | libatomic.x86_64 27 | libcap.x86_64 28 | libdrm.x86_64 29 | libglvnd-glx.x86_64 30 | libsndfile.x86_64 31 | libtirpc.x86_64 32 | libtool-ltdl.x86_64 33 | libuuid.x86_64 34 | libwayland-client.x86_64 35 | libxcrypt-compat.x86_64 36 | make.x86_64 37 | mesa-libgbm.x86_64 38 | net-tools.x86_64 39 | nettle.x86_64 40 | nspr.x86_64 41 | nss.x86_64 42 | nss-util.x86_64 43 | pam.x86_64 44 | pango.x86_64 45 | pixman.x86_64 46 | procps-ng.x86_64 47 | sudo.x86_64 48 | systemd-libs.x86_64 49 | unzip.x86_64 50 | which.x86_64 51 | zlib.x86_64 52 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | libasound2 3 | libatomic1 4 | libc6 5 | libcairo-gobject2 6 | libcairo2 7 | libcap2 8 | libcrypt1 9 | libcups2 10 | libdrm2 11 | libfontconfig1 12 | libfribidi0 13 | libgbm1 14 | libgdk-pixbuf2.0-0 15 | libgl1 16 | libglib2.0-0 17 | libgstreamer-plugins-base1.0-0 18 | libgstreamer1.0-0 19 | libgtk-3-0 20 | libice6 21 | libltdl7 22 | libmd0 23 | libnspr4 24 | libnss3 25 | libpam0g 26 | libpango-1.0-0 27 | libpangocairo-1.0-0 28 | libpangoft2-1.0-0 29 | libpixman-1-0 30 | libsndfile1 31 | libtirpc3 32 | libudev1 33 | libuuid1 34 | libwayland-client0 35 | libxcomposite1 36 | libxcursor1 37 | libxdamage1 38 | libxfixes3 39 | libxfont2 40 | libxft2 41 | libxinerama1 42 | libxrandr2 43 | libxt6 44 | libxtst6 45 | libxxf86vm1 46 | locales 47 | locales-all 48 | make 49 | net-tools 50 | procps 51 | sudo 52 | unzip 53 | zlib1g 54 | wget 55 | libcrypt-dev 56 | linux-libc-dev 57 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/ubuntu22.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | FROM ubuntu:22.04 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN export DEBIAN_FRONTEND=noninteractive \ 9 | && apt-get update \ 10 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 11 | && apt-get clean && apt-get -y autoremove \ 12 | && rm -rf /var/lib/apt/lists/* 13 | 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | WORKDIR / 17 | 18 | # Uncomment the following RUN apt-get statement if you will be using Simulink 19 | # code generation capabilities, or if you will be compiling your own mex files 20 | # with gcc, g++, or gfortran. 21 | # 22 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y gcc g++ gfortran && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 23 | 24 | # Uncomment the following RUN apt-get statement to enable running a program 25 | # that makes use of MATLAB's Engine API for C and Fortran 26 | # https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 27 | # 28 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y csh && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 29 | 30 | # Uncomment ALL of the following RUN apt-get statement to enable the playing of media files 31 | # (mp3, mp4, etc.) from within MATLAB. 32 | # 33 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libgstreamer1.0-0 \ 34 | # gstreamer1.0-tools \ 35 | # gstreamer1.0-libav \ 36 | # gstreamer1.0-plugins-base \ 37 | # gstreamer1.0-plugins-good \ 38 | # gstreamer1.0-plugins-bad \ 39 | # gstreamer1.0-plugins-ugly \ 40 | # && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 41 | 42 | # Uncomment the following line if you require the fuse filesystem 43 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libfuse2 && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 44 | 45 | # Uncomment the following line if you require firefox 46 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y firefox && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 47 | 48 | # Uncomment to resolve any license manager issues 49 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 50 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/ubuntu22.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | libasound2 3 | libatomic1 4 | libc6 5 | libcairo-gobject2 6 | libcairo2 7 | libcap2 8 | libcrypt1 9 | libcups2 10 | libdrm2 11 | libfontconfig1 12 | libfribidi0 13 | libgbm1 14 | libgdk-pixbuf-2.0-0 15 | libgl1 16 | libglib2.0-0 17 | libgstreamer-plugins-base1.0-0 18 | libgstreamer1.0-0 19 | libgtk-3-0 20 | libice6 21 | libltdl7 22 | libmd0 23 | libnettle8 24 | libnspr4 25 | libnss3 26 | libpam0g 27 | libpango-1.0-0 28 | libpangocairo-1.0-0 29 | libpangoft2-1.0-0 30 | libpixman-1-0 31 | libsndfile1 32 | libtirpc3 33 | libudev1 34 | libuuid1 35 | libwayland-client0 36 | libxcomposite1 37 | libxcursor1 38 | libxdamage1 39 | libxfixes3 40 | libxfont2 41 | libxft2 42 | libxinerama1 43 | libxrandr2 44 | libxt6 45 | libxtst6 46 | libxxf86vm1 47 | locales 48 | locales-all 49 | make 50 | net-tools 51 | procps 52 | sudo 53 | unzip 54 | zlib1g 55 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/ubuntu24.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | FROM ubuntu:24.04 3 | 4 | LABEL maintainer="The MathWorks" 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN export DEBIAN_FRONTEND=noninteractive \ 9 | && apt-get update \ 10 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 11 | && apt-get clean \ 12 | && apt-get -y autoremove \ 13 | && rm -rf /var/lib/apt/lists/* 14 | 15 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 16 | 17 | WORKDIR / 18 | 19 | # Uncomment the following RUN apt-get statement if you will be using Simulink 20 | # code generation capabilities, or if you will be compiling your own mex files 21 | # with gcc, g++, or gfortran. 22 | # 23 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y gcc g++ gfortran && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 24 | 25 | # Uncomment the following RUN apt-get statement to enable running a program 26 | # that makes use of MATLAB's Engine API for C and Fortran 27 | # https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 28 | # 29 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install -y csh && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 30 | 31 | # Uncomment ALL of the following RUN apt-get statement to enable the playing of media files 32 | # (mp3, mp4, etc.) from within MATLAB. 33 | # 34 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libgstreamer1.0-0 \ 35 | # gstreamer1.0-tools \ 36 | # gstreamer1.0-libav \ 37 | # gstreamer1.0-plugins-base \ 38 | # gstreamer1.0-plugins-good \ 39 | # gstreamer1.0-plugins-bad \ 40 | # gstreamer1.0-plugins-ugly \ 41 | # && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 42 | 43 | # Uncomment the following line if you require the fuse filesystem 44 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y libfuse2 && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 45 | 46 | # Uncomment the following line if you require firefox 47 | #RUN export DEBIAN_FRONTEND=noninteractive && apt-get update -y && apt-get install --no-install-recommends -y firefox && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 48 | 49 | # Uncomment to resolve any license manager issues 50 | #RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 51 | -------------------------------------------------------------------------------- /matlab-deps/r2024b/ubuntu24.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | debianutils 3 | libasound2t64 4 | libatomic1 5 | libc6 6 | libcairo-gobject2 7 | libcairo2 8 | libcap2 9 | libcrypt1 10 | libcups2t64 11 | libdrm2 12 | libfontconfig1 13 | libfribidi0 14 | libgbm1 15 | libgdk-pixbuf-2.0-0 16 | libgl1 17 | libglib2.0-0t64 18 | libgstreamer-plugins-base1.0-0 19 | libgstreamer1.0-0 20 | libgtk-3-0t64 21 | libice6 22 | libltdl7 23 | libmd0 24 | libnettle8t64 25 | libnspr4 26 | libnss3 27 | libpam0g 28 | libpango-1.0-0 29 | libpangocairo-1.0-0 30 | libpangoft2-1.0-0 31 | libpixman-1-0 32 | libsndfile1 33 | libtirpc3t64 34 | libudev1 35 | libuuid1 36 | libwayland-client0 37 | libxcomposite1 38 | libxcursor1 39 | libxdamage1 40 | libxfixes3 41 | libxfont2 42 | libxft2 43 | libxinerama1 44 | libxrandr2 45 | libxt6t64 46 | libxtst6 47 | libxxf86vm1 48 | locales 49 | locales-all 50 | make 51 | net-tools 52 | procps 53 | sudo 54 | unzip 55 | zlib1g 56 | -------------------------------------------------------------------------------- /matlab-deps/r2025a/aws-batch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024-2025 The MathWorks, Inc. 2 | 3 | FROM nvidia/cuda:12.2.2-base-ubuntu22.04 4 | 5 | LABEL maintainer="The MathWorks, Inc." 6 | 7 | # base-dependencies.txt lists libraries required by MATLAB, except for: 8 | # csh - Support MATLAB's Engine API for C and Fortran. See https://www.mathworks.com/help/matlab/matlab_external/introducing-matlab-engine.html 9 | # gcc, g++, gfortran - Support Simulink code generation and mex with gcc, g++, or gfortran. 10 | # locales, locales-all - Provide extended locales support 11 | # python3, python3-pip - Python and pip are to run/install the AWS CLI. 12 | # unzip, zip - Used to stage input/output data. 13 | COPY base-dependencies.txt /tmp/base-dependencies.txt 14 | 15 | RUN export DEBIAN_FRONTEND=noninteractive \ 16 | && apt-get update \ 17 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 18 | && apt-get clean && apt-get -y autoremove \ 19 | && rm -rf /var/lib/apt/lists/* 20 | 21 | WORKDIR / 22 | 23 | # Install the AWS CLI to use for staging input and output data 24 | RUN pip3 install awscli 25 | 26 | # Create directories for the MATLAB install and for the JobStorageLocation 27 | ENV JOB_STORAGE_LOCATION /usr/local/JobStorageLocation 28 | ENV MATLAB_INSTALL_LOCATION /usr/local/matlab 29 | RUN mkdir -p ${MATLAB_INSTALL_LOCATION} ${JOB_STORAGE_LOCATION} 30 | RUN chmod -R +wx ${JOB_STORAGE_LOCATION} 31 | 32 | # To avoid inadvertantly polluting the / directory, use the JobStorageLocation 33 | # while running MATLAB. 34 | WORKDIR ${JOB_STORAGE_LOCATION} 35 | 36 | COPY stageDataAndRunJob.sh /usr/local/stageDataAndRunJob.sh 37 | RUN chmod +x /usr/local/stageDataAndRunJob.sh 38 | ENTRYPOINT ["/usr/local/stageDataAndRunJob.sh"] 39 | -------------------------------------------------------------------------------- /matlab-deps/r2025a/aws-batch/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | ibverbs-providers 3 | libasound2 4 | libatomic1 5 | libc6 6 | libcairo-gobject2 7 | libcairo2 8 | libcap2 9 | libcrypt1 10 | libcups2 11 | libdrm2 12 | libfontconfig1 13 | libfribidi0 14 | libgbm1 15 | libgdk-pixbuf-2.0-0 16 | libgl1 17 | libglib2.0-0 18 | libgstreamer-plugins-base1.0-0 19 | libgstreamer1.0-0 20 | libgtk-3-0 21 | libibverbs1 22 | libice6 23 | libltdl7 24 | libnspr4 25 | libnss3 26 | libnuma1 27 | libpam0g 28 | libpango-1.0-0 29 | libpangocairo-1.0-0 30 | libpangoft2-1.0-0 31 | libpixman-1-0 32 | libpsm2-2 33 | librdmacm1 34 | libsndfile1 35 | libtirpc3 36 | libucx0 37 | libuuid1 38 | libwayland-client0 39 | libxcomposite1 40 | libxcursor1 41 | libxdamage1 42 | libxfixes3 43 | libxfont2 44 | libxft2 45 | libxinerama1 46 | libxrandr2 47 | libxt6 48 | libxtst6 49 | libxxf86vm1 50 | locales 51 | locales-all 52 | make 53 | net-tools 54 | procps 55 | sudo 56 | unzip 57 | x11-xkb-utils 58 | zlib1g 59 | csh 60 | g++ 61 | gcc 62 | gfortran 63 | python3 64 | python3-pip 65 | zip 66 | -------------------------------------------------------------------------------- /matlab-deps/r2025a/ubi8/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2025 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi8/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG=C 13 | RUN [ -s /etc/machine-id ] || dbus-uuidgen > /etc/machine-id 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | -------------------------------------------------------------------------------- /matlab-deps/r2025a/ubi8/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 2 | cairo.x86_64 3 | cairo-gobject.x86_64 4 | cups-libs.x86_64 5 | fontconfig.x86_64 6 | fribidi.x86_64 7 | gdk-pixbuf2.x86_64 8 | glib2.x86_64 9 | glibc.x86_64 10 | glibc-langpack-en.x86_64 11 | glibc-locale-source.x86_64 12 | gtk3.x86_64 13 | libICE.x86_64 14 | libXcomposite.x86_64 15 | libXcursor.x86_64 16 | libXdamage.x86_64 17 | libXfixes.x86_64 18 | libXft.x86_64 19 | libXinerama.x86_64 20 | libXrandr.x86_64 21 | libXt.x86_64 22 | libXtst.x86_64 23 | libXxf86vm.x86_64 24 | libatomic.x86_64 25 | libcap.x86_64 26 | libdrm.x86_64 27 | libglvnd-glx.x86_64 28 | libibverbs.x86_64 29 | librdmacm.x86_64 30 | libsndfile.x86_64 31 | libtirpc.x86_64 32 | libtool-ltdl.x86_64 33 | libuuid.x86_64 34 | libwayland-client.x86_64 35 | libxcrypt.x86_64 36 | make.x86_64 37 | mesa-libgbm.x86_64 38 | net-tools.x86_64 39 | nspr.x86_64 40 | nss.x86_64 41 | nss-util.x86_64 42 | numactl-libs.x86_64 43 | pam.x86_64 44 | pango.x86_64 45 | pixman.x86_64 46 | procps-ng.x86_64 47 | sudo.x86_64 48 | unzip.x86_64 49 | which.x86_64 50 | zlib.x86_64 51 | -------------------------------------------------------------------------------- /matlab-deps/r2025a/ubi9/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2025 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi9/ubi:latest 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN yum update --disableplugin=subscription-manager -y \ 9 | && yum install --disableplugin=subscription-manager -y `cat /tmp/base-dependencies.txt` \ 10 | && yum --disableplugin=subscription-manager clean all -y 11 | 12 | ENV LANG=C 13 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 14 | -------------------------------------------------------------------------------- /matlab-deps/r2025a/ubi9/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | alsa-lib.x86_64 2 | cairo.x86_64 3 | cairo-gobject.x86_64 4 | cups-libs.x86_64 5 | fontconfig.x86_64 6 | fribidi.x86_64 7 | gdk-pixbuf2.x86_64 8 | glib2.x86_64 9 | glibc.x86_64 10 | glibc-langpack-en.x86_64 11 | glibc-locale-source.x86_64 12 | gstreamer1.x86_64 13 | gstreamer1-plugins-base.x86_64 14 | gtk3.x86_64 15 | libICE.x86_64 16 | libXcomposite.x86_64 17 | libXcursor.x86_64 18 | libXdamage.x86_64 19 | libXfixes.x86_64 20 | libXft.x86_64 21 | libXinerama.x86_64 22 | libXrandr.x86_64 23 | libXt.x86_64 24 | libXtst.x86_64 25 | libXxf86vm.x86_64 26 | libatomic.x86_64 27 | libcap.x86_64 28 | libdrm.x86_64 29 | libglvnd-glx.x86_64 30 | libibverbs.x86_64 31 | librdmacm.x86_64 32 | libsndfile.x86_64 33 | libtirpc.x86_64 34 | libtool-ltdl.x86_64 35 | libuuid.x86_64 36 | libwayland-client.x86_64 37 | libxcrypt-compat.x86_64 38 | make.x86_64 39 | mesa-libgbm.x86_64 40 | net-tools.x86_64 41 | nspr.x86_64 42 | nss.x86_64 43 | nss-util.x86_64 44 | numactl-libs.x86_64 45 | pam.x86_64 46 | pango.x86_64 47 | pixman.x86_64 48 | procps-ng.x86_64 49 | sudo.x86_64 50 | unzip.x86_64 51 | which.x86_64 52 | zlib.x86_64 53 | -------------------------------------------------------------------------------- /matlab-deps/r2025a/ubuntu22.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2025 The MathWorks, Inc. 2 | FROM ubuntu:22.04 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN export DEBIAN_FRONTEND=noninteractive \ 9 | && apt-get update \ 10 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 11 | && apt-get clean && apt-get -y autoremove \ 12 | && rm -rf /var/lib/apt/lists/* 13 | 14 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 15 | 16 | WORKDIR / 17 | -------------------------------------------------------------------------------- /matlab-deps/r2025a/ubuntu22.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | ibverbs-providers 3 | libasound2 4 | libatomic1 5 | libc6 6 | libcairo-gobject2 7 | libcairo2 8 | libcap2 9 | libcrypt1 10 | libcups2 11 | libdrm2 12 | libfontconfig1 13 | libfribidi0 14 | libgbm1 15 | libgdk-pixbuf-2.0-0 16 | libgl1 17 | libglib2.0-0 18 | libgstreamer-plugins-base1.0-0 19 | libgstreamer1.0-0 20 | libgtk-3-0 21 | libibverbs1 22 | libice6 23 | libltdl7 24 | libnspr4 25 | libnss3 26 | libnuma1 27 | libpam0g 28 | libpango-1.0-0 29 | libpangocairo-1.0-0 30 | libpangoft2-1.0-0 31 | libpixman-1-0 32 | libpsm2-2 33 | librdmacm1 34 | libsndfile1 35 | libtirpc3 36 | libucx0 37 | libuuid1 38 | libwayland-client0 39 | libxcomposite1 40 | libxcursor1 41 | libxdamage1 42 | libxfixes3 43 | libxfont2 44 | libxft2 45 | libxinerama1 46 | libxrandr2 47 | libxt6 48 | libxtst6 49 | libxxf86vm1 50 | locales 51 | locales-all 52 | make 53 | net-tools 54 | procps 55 | sudo 56 | unzip 57 | x11-xkb-utils 58 | zlib1g 59 | -------------------------------------------------------------------------------- /matlab-deps/r2025a/ubuntu24.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2025 The MathWorks, Inc. 2 | FROM ubuntu:24.04 3 | 4 | LABEL maintainer="The MathWorks" 5 | 6 | COPY base-dependencies.txt /tmp/base-dependencies.txt 7 | 8 | RUN export DEBIAN_FRONTEND=noninteractive \ 9 | && apt-get update \ 10 | && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 11 | && apt-get clean \ 12 | && apt-get -y autoremove \ 13 | && rm -rf /var/lib/apt/lists/* 14 | 15 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 16 | 17 | WORKDIR / 18 | -------------------------------------------------------------------------------- /matlab-deps/r2025a/ubuntu24.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | debianutils 3 | ibverbs-providers 4 | libasound2t64 5 | libatomic1 6 | libc6 7 | libcairo-gobject2 8 | libcairo2 9 | libcap2 10 | libcrypt1 11 | libcups2t64 12 | libdrm2 13 | libfontconfig1 14 | libfribidi0 15 | libgbm1 16 | libgdk-pixbuf-2.0-0 17 | libgl1 18 | libglib2.0-0t64 19 | libgstreamer-plugins-base1.0-0 20 | libgstreamer1.0-0 21 | libgtk-3-0t64 22 | libibverbs1 23 | libice6 24 | libltdl7 25 | libnspr4 26 | libnss3 27 | libnuma1 28 | libpam0g 29 | libpango-1.0-0 30 | libpangocairo-1.0-0 31 | libpangoft2-1.0-0 32 | libpixman-1-0 33 | libpsm2-2 34 | librdmacm1t64 35 | libsndfile1 36 | libtirpc3t64 37 | libucx0 38 | libuhd4.6.0-dpdk 39 | libuuid1 40 | libwayland-client0 41 | libxcomposite1 42 | libxcursor1 43 | libxdamage1 44 | libxfixes3 45 | libxfont2 46 | libxft2 47 | libxinerama1 48 | libxrandr2 49 | libxt6t64 50 | libxtst6 51 | libxxf86vm1 52 | locales 53 | locales-all 54 | make 55 | net-tools 56 | procps 57 | sudo 58 | unzip 59 | x11-xkb-utils 60 | zlib1g 61 | -------------------------------------------------------------------------------- /matlab-runtime-deps/README.md: -------------------------------------------------------------------------------- 1 | # MATLAB Runtime Dependencies 2 | 3 | This container includes the dependencies required by MATLAB® Runtime. 4 | 5 | **Note: This container does not include MATLAB Runtime.** 6 | 7 | ## Supported Tags 8 | 9 | | Tags | MATLAB Version | Operating System | Base Image | Usage Notes | 10 | | ------------ |:--------------:| ---------------- |----------- | ----------- | 11 | |[`latest`, `r2024b`, `r2024b-ubuntu24.04`](https://github.com/mathworks-ref-arch/container-images/blob/main/matlab-runtime-deps/r2024b/ubuntu24.04/Dockerfile) | r2024b | Ubuntu 24.04 | ubuntu:24.04 | | 12 | |[`r2024a`, `r2024a-ubuntu22.04`](https://github.com/mathworks-ref-arch/container-images/blob/main/matlab-runtime-deps/r2024a/ubuntu22.04/Dockerfile) | r2024a | Ubuntu 22.04 | ubuntu:22.04 | | 13 | |[`r2023b`, `r2023b-ubuntu22.04`](https://github.com/mathworks-ref-arch/container-images/blob/main/matlab-runtime-deps/r2023b/ubuntu22.04/Dockerfile) | r2023b | Ubuntu 22.04 | ubuntu:22.04 | | 14 | 15 | ## License 16 | The license for this container is available [here](https://github.com/mathworks-ref-arch/container-images/blob/main/LICENSE.md). 17 | 18 | ## Security Reporting 19 | To report suspected security issues, follow [these instructions](https://github.com/mathworks-ref-arch/container-images/blob/main/SECURITY.md). 20 | 21 | ## Technical Support 22 | If you require assistance or have a request for additional features or capabilities, please contact [MathWorks Technical Support](https://www.mathworks.com/support/contact_us.html). 23 | 24 | ---- 25 | 26 | Copyright 2023-2025 The MathWorks, Inc. 27 | 28 | ---- -------------------------------------------------------------------------------- /matlab-runtime-deps/r2023b/ubuntu22.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | 3 | FROM ubuntu:22.04 4 | 5 | ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC" 6 | 7 | COPY base-dependencies.txt /tmp/base-dependencies.txt 8 | 9 | RUN apt-get update && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 10 | && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 11 | 12 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 13 | -------------------------------------------------------------------------------- /matlab-runtime-deps/r2023b/ubuntu22.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates gstreamer1.0-libav gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-tools libasound2 libc6 libcairo-gobject2 libcairo2 libcap2 libcrypt1 libcups2 libdrm2 libdw1 libgbm1 libgdk-pixbuf-2.0-0 libgl1 libglib2.0-0 libgomp1 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libice6 libnspr4 libnss3 libodbc2 libodbcinst2 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libsndfile1 libsystemd0 libuuid1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxinerama1 libxrandr2 libxt6 libxtst6 libxxf86vm1 net-tools procps unzip zlib1g -------------------------------------------------------------------------------- /matlab-runtime-deps/r2024a/ubuntu22.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | 3 | FROM ubuntu:22.04 4 | 5 | ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC" 6 | 7 | COPY base-dependencies.txt /tmp/base-dependencies.txt 8 | 9 | RUN apt-get update && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 10 | && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 11 | 12 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 13 | -------------------------------------------------------------------------------- /matlab-runtime-deps/r2024a/ubuntu22.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates gstreamer1.0-libav gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-tools libasound2 libc6 libcairo-gobject2 libcairo2 libcap2 libcrypt1 libcups2 libdrm2 libdw1 libgbm1 libgdk-pixbuf-2.0-0 libgl1 libglib2.0-0 libgomp1 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libice6 libnspr4 libnss3 libodbc2 libodbcinst2 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libsndfile1 libsystemd0 libuuid1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxinerama1 libxrandr2 libxt6 libxtst6 libxxf86vm1 net-tools procps unzip zlib1g -------------------------------------------------------------------------------- /matlab-runtime-deps/r2024b/ubuntu24.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | 3 | FROM ubuntu:24.04 4 | 5 | ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC" 6 | 7 | COPY base-dependencies.txt /tmp/base-dependencies.txt 8 | 9 | RUN apt-get update && apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` \ 10 | && apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 11 | 12 | RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb 13 | -------------------------------------------------------------------------------- /matlab-runtime-deps/r2024b/ubuntu24.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-tools libasound2t64 libatomic1 libc6 libcairo-gobject2 libcairo2 libcap2 libcups2t64 libdrm2 libfontconfig1 libfribidi0 libgbm1 libgdk-pixbuf-2.0-0 libgl1 libglib2.0-0t64 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0t64 libgtk2.0-0t64 libice6 libltdl7 libnettle8t64 libnspr4 libnss3 libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpixman-1-0 libsndfile1 libtirpc3t64 libuuid1 libwayland-client0 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxfont2 libxft2 libxinerama1 libxrandr2 libxt6t64 libxtst6 libxxf86vm1 net-tools procps unzip zlib1g -------------------------------------------------------------------------------- /matlab/build/config/MATLAB.desktop: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2024 The MathWorks, Inc. 2 | [Desktop Entry] 3 | Version=1.0 4 | Type=Application 5 | Name=MATLAB {{MATLAB_RELEASE}} 6 | Comment= 7 | Exec=/usr/bin/bash -ic 'matlab -desktop' 8 | Icon=/opt/matlab/{{MATLAB_RELEASE}}/bin/glnxa64/cef_resources/matlab_icon.png 9 | Path= 10 | Terminal=false 11 | StartupNotify=false 12 | Path=/home/matlab/Documents/MATLAB 13 | -------------------------------------------------------------------------------- /matlab/build/config/localsudo: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2024 The MathWorks, Inc. 2 | 3 | # Allow members of the admin group to sudo without password 4 | Defaults env_keep += "http_proxy https_proxy no_proxy MW_PROXY_HOST MW_PROXY_PORT MLM_LICENSE_FILE MW_SERVICEHOST_USE_HOSTNAME_FOR_PERSISTENCE" 5 | matlab ALL=(ALL:ALL) NOPASSWD:ALL 6 | -------------------------------------------------------------------------------- /matlab/build/config/matlab.prf: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2024 The MathWorks, Inc. 2 | # MATLAB Preferences 3 | CurrentKeyBindingSet=SWindows 4 | -------------------------------------------------------------------------------- /matlab/build/config/matlab_deep_learning/MNISTExample.mlx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/container-images/8aaadcfba6c9ec437294203022825ec2e8e7817e/matlab/build/config/matlab_deep_learning/MNISTExample.mlx -------------------------------------------------------------------------------- /matlab/build/config/novnc_login_redirect.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /matlab/build/config/startup.m: -------------------------------------------------------------------------------- 1 | % Copyright 2024 The MathWorks, Inc. 2 | 3 | function startup 4 | 5 | % Setup default proxy settings based on the environment variables that 6 | % are set in the run.sh script. 7 | host = getenv('MW_PROXY_HOST'); 8 | port = getenv('MW_PROXY_PORT'); 9 | if ~isempty(host) && ~isempty(port) 10 | matlab.net.internal.copyProxySettingsFromEnvironment(); 11 | end 12 | 13 | end 14 | -------------------------------------------------------------------------------- /matlab/build/config/xfce4/desktop/icons.screen0.rc: -------------------------------------------------------------------------------- 1 | [xfdesktop-version-4.10.3+-rcfile_format] 2 | 4.10.3+=true 3 | 4 | [/home/matlab/Desktop/MATLAB.desktop] 5 | row=1 6 | col=1 7 | 8 | -------------------------------------------------------------------------------- /matlab/build/config/xfce4/panel/launcher-10/panel-file-manager.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Exec=exo-open --launch FileManager %u 5 | Icon=system-file-manager 6 | StartupNotify=true 7 | Terminal=false 8 | Categories=Utility;X-XFCE;X-Xfce-Toplevel; 9 | OnlyShowIn=XFCE; 10 | X-XFCE-MimeType=inode/directory;x-scheme-handler/trash; 11 | Name=File Manager 12 | Comment=Browse the file system 13 | X-XFCE-Source=file:///usr/share/applications/exo-file-manager.desktop 14 | -------------------------------------------------------------------------------- /matlab/build/config/xfce4/panel/launcher-12/panel-app-finder.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Exec=xfce4-appfinder 4 | Icon=edit-find 5 | StartupNotify=true 6 | Terminal=false 7 | Type=Application 8 | Categories=Utility;X-XFCE; 9 | Name=Application Finder 10 | Comment=Find and launch applications installed on your system 11 | X-XFCE-Source=file:///usr/share/applications/xfce4-appfinder.desktop 12 | -------------------------------------------------------------------------------- /matlab/build/config/xfce4/panel/launcher-9/panel-terminal.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Exec=exo-open --launch TerminalEmulator 5 | Icon=utilities-terminal 6 | StartupNotify=true 7 | Terminal=false 8 | Categories=Utility;X-XFCE;X-Xfce-Toplevel; 9 | OnlyShowIn=XFCE; 10 | Name=Terminal Emulator 11 | Comment=Use the command line 12 | X-XFCE-Source=file:///usr/share/applications/exo-terminal-emulator.desktop 13 | -------------------------------------------------------------------------------- /matlab/build/config/xfce4/xfconf/xfce-perchannel-xml/wallpaper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/container-images/8aaadcfba6c9ec437294203022825ec2e8e7817e/matlab/build/config/xfce4/xfconf/xfce-perchannel-xml/wallpaper.jpg -------------------------------------------------------------------------------- /matlab/build/config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /matlab/build/config/xscreensaver: -------------------------------------------------------------------------------- 1 | mode: off 2 | 3 | -------------------------------------------------------------------------------- /matlab/build/config/xstartup: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Copyright 2021-2024 The MathWorks, Inc. 4 | 5 | xhost + 6 | 7 | # SESSION_MANAGER is inherited from the environment and some window 8 | # managers require that it be cleared. 9 | # http://osdir.com/ml/gnome.ximian.snapshots/2002-09/msg00034.html 10 | unset SESSION_MANAGER 11 | 12 | # Startup scripts, e.g. /etc/xdg/xfce4/xinitrc require 13 | # http://en.wikipedia.org/wiki/D-Bus to run correctly. 14 | unset DBUS_SESSION_BUS_ADDRESS 15 | 16 | # Set VNCSESSION to tell /etc/xdg/xfce4/xinitrc to not run xscreensaver 17 | # http://vstone.eu/2009/04/disabling-xscreensaver-when-using-xfce-vnc/ 18 | export VNCSESSION=yes 19 | 20 | startxfce4 & 21 | 22 | # Make sure that copy / paste are correctly forwarded to the VNC viewer 23 | vncconfig -nowin 24 | -------------------------------------------------------------------------------- /matlab/build/readmes/browser_readme: -------------------------------------------------------------------------------- 1 | Welcome to the MATLAB Container 2 | 3 | This container includes commercial software products of The MathWorks, 4 | Inc. ("MathWorks Programs") and related materials. MathWorks Programs are 5 | licensed under the MathWorks Software License Agreement, available in the 6 | MATLAB installation in this container. Related materials in this 7 | container are licensed under separate licenses which can be found in 8 | their respective folders. 9 | 10 | Use the -help flag to learn more about the usage of this container: 11 | 12 | docker run mathworks/matlab:{{MATLAB_RELEASE}} -help 13 | 14 | To access MATLAB running in the container via web browser, make sure you have exposed port 8888. 15 | To get started: 16 | 17 | Point a browser to port 8888 of the docker host machine running 18 | this container 19 | 20 | http://hostname:8888/index.html 21 | 22 | If want to launch MATLAB on a different base url, you need to set MWI_BASE_URL environment variable. 23 | `MWI_BASE_URL`: Default value is '/'. The url at which MATLAB will be accessible at. 24 | Must start with '/'. If set to "/matlab", the url to access MATLAB would be: 25 | `http://hostname:8888/matlab/index.html` 26 | 27 | For a complete list of environment variables, check the link below: 28 | https://github.com/mathworks/matlab-proxy/blob/main/Advanced-Usage.md 29 | 30 | If you require assistance or have a request for additional features or capabilities, please contact MathWorks Technical Support: https://www.mathworks.com/support/contact_us.html 31 | -------------------------------------------------------------------------------- /matlab/build/readmes/help_readme: -------------------------------------------------------------------------------- 1 | Welcome to the MATLAB Container 2 | 3 | This help page documents the different flags and environment variables that you can use when starting the container. 4 | 5 | Options: 6 | -help Show this screen. 7 | -vnc Start the VNC server process for MATLAB desktop. 8 | -browser Start MATLAB desktop to access it in a browser. 9 | -shell Start a shell in the container. 10 | -batch Start MATLAB in batch mode on container startup, and run the specified command. Requires MLM_LICENSE_FILE to be set. 11 | 12 | Environment variables: 13 | General: 14 | MLM_LICENSE_FILE Use to license MATLAB; specify either a mounted license file or a license server of the form port@hostname. 15 | PROXY_SETTINGS Use a proxy server to connect to the MathWorks licensing servers. 16 | PASSWORD Change the password used to access the MATLAB desktop. 17 | 18 | If -browser flag is used to launch the container: 19 | MWI_BASE_URL Will set the base url on which MATLAB will be accessible on. 20 | 21 | Find detailed documentation for this container at the link below: 22 | https://hub.docker.com/r/mathworks/matlab 23 | -------------------------------------------------------------------------------- /matlab/build/readmes/vnc_readme: -------------------------------------------------------------------------------- 1 | Welcome to the MATLAB Container 2 | 3 | This container includes commercial software products of The MathWorks, 4 | Inc. ("MathWorks Programs") and related materials. MathWorks Programs are 5 | licensed under the MathWorks Software License Agreement, available in the 6 | MATLAB installation in this container. Related materials in this 7 | container are licensed under separate licenses which can be found in 8 | their respective folders. 9 | 10 | Use the -help flag to learn more about the usage of this container: 11 | 12 | docker run mathworks/matlab:{{MATLAB_RELEASE}} -help 13 | 14 | To be able to access the container via web browser or VNC, make sure you have exposed port 6080 and 5901, respectively. 15 | To get started, either 16 | 17 | 1. Point a browser to port 6080 of the docker host machine running 18 | this container 19 | 20 | http://hostname:6080 21 | 22 | 2. Use a VNC client to connect to display 1 of the docker host 23 | machine 24 | 25 | hostname:1 26 | 27 | The default password to access the container desktop is 28 | 29 | matlab 30 | 31 | If you require assistance or have a request for additional features or capabilities, please contact MathWorks Technical Support: https://www.mathworks.com/support/contact_us.html 32 | -------------------------------------------------------------------------------- /matlab/build/readmes/welcome_readme: -------------------------------------------------------------------------------- 1 | Welcome to the MATLAB Container 2 | 3 | This container includes commercial software products of The MathWorks, 4 | Inc. ("MathWorks Programs") and related materials. MathWorks Programs are 5 | licensed under the MathWorks Software License Agreement, available in the 6 | MATLAB installation in this container. Related materials in this 7 | container are licensed under separate licenses which can be found in 8 | their respective folders. 9 | 10 | Use the -help flag to learn more about the usage of this container: 11 | 12 | docker run mathworks/matlab:{{MATLAB_RELEASE}} -help 13 | 14 | If you require assistance or have a request for additional features or capabilities, please contact MathWorks Technical Support: https://www.mathworks.com/support/contact_us.html 15 | -------------------------------------------------------------------------------- /matlab/build/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Copyright 2021-2024 The MathWorks, Inc. 4 | 5 | set -e 6 | 7 | . $(dirname "$0")/utils.sh 8 | 9 | modes=0 10 | 11 | CUSTOM_COMMAND="" 12 | 13 | while [ $# -gt 0 ]; do 14 | case "$1" in 15 | -help) 16 | HELP=true 17 | modes=$((modes + 1)) 18 | ;; 19 | -vnc | -shell) 20 | VNC=true 21 | modes=$((modes + 1)) 22 | ;; 23 | -browser) 24 | BROWSER=true 25 | modes=$((modes + 1)) 26 | ;; 27 | *) 28 | CUSTOM_COMMAND="${CUSTOM_COMMAND} $(build_cmd "$1")" 29 | ;; 30 | esac 31 | shift 32 | done 33 | 34 | validateInput 35 | checkLicensing 36 | checkSharedMemorySpace 37 | checkEnvironmentVariables 38 | startContainer 39 | 40 | exit 41 | -------------------------------------------------------------------------------- /matlab/release-config/R2023a.env.hcl: -------------------------------------------------------------------------------- 1 | # Copyright 2024-2025 The MathWorks, Inc. 2 | 3 | MATLAB_RELEASE="R2023a" 4 | 5 | MATLAB_DEPS_OS="ubuntu20.04" 6 | 7 | # Using gcc-9 instead of gcc-11 as it is not available on Ubuntu 20.04 8 | GCC="gcc-9" 9 | GPP="g++-9" 10 | 11 | # Ubuntu 20.04 requires python3.8-venv when using pipx 12 | APT_ADDITIONAL_PACKAGES="python3.8-venv" 13 | 14 | # Ubuntu 20.04 has vncpasswd provided by tigervnc-common so don't need tigervnc-tools 15 | APT_ADDITIONAL_PACKAGES_VNC="" 16 | -------------------------------------------------------------------------------- /matlab/release-config/R2023b.env.hcl: -------------------------------------------------------------------------------- 1 | # Copyright 2024-2025 The MathWorks, Inc. 2 | 3 | MATLAB_RELEASE="R2023b" 4 | 5 | MATLAB_DEPS_OS="ubuntu22.04" 6 | 7 | GCC="gcc-11" 8 | GPP="g++-11" 9 | -------------------------------------------------------------------------------- /matlab/release-config/R2024a.env.hcl: -------------------------------------------------------------------------------- 1 | # Copyright 2024-2025 The MathWorks, Inc. 2 | 3 | MATLAB_RELEASE="R2024a" 4 | 5 | MATLAB_DEPS_OS="ubuntu22.04" 6 | 7 | GCC="gcc-12" 8 | GPP="g++-12" 9 | -------------------------------------------------------------------------------- /matlab/release-config/R2024b.env.hcl: -------------------------------------------------------------------------------- 1 | # Copyright 2024-2025 The MathWorks, Inc. 2 | 3 | MATLAB_RELEASE="R2024b" 4 | 5 | MATLAB_DEPS_OS="ubuntu22.04" 6 | 7 | GCC="gcc-12" 8 | GPP="g++-12" 9 | -------------------------------------------------------------------------------- /matlab/release-config/R2025a.env.hcl: -------------------------------------------------------------------------------- 1 | # Copyright 2025 The MathWorks, Inc. 2 | 3 | MATLAB_RELEASE="R2025a" 4 | 5 | MATLAB_DEPS_OS="ubuntu24.04" 6 | 7 | GCC="gcc-12" 8 | GPP="g++-12" 9 | -------------------------------------------------------------------------------- /network-license-manager/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | FROM registry.access.redhat.com/ubi9/ubi:latest 3 | 4 | RUN yum update --disableplugin=subscription-manager -y \ 5 | && yum install --disableplugin=subscription-manager -y unzip \ 6 | && yum --disableplugin=subscription-manager clean all -y 7 | 8 | # Get license manager directly from the mathworks website 9 | ARG MATLAB_RELEASE=R2025a 10 | RUN cd /tmp && \ 11 | curl https://ssd.mathworks.com/supportfiles/downloads/${MATLAB_RELEASE}/license_manager/${MATLAB_RELEASE}/daemons/glnxa64/mathworks_network_license_manager_glnxa64.zip --output mathworks_network_license_manager_glnxa64.zip && \ 12 | unzip mathworks_network_license_manager_glnxa64.zip -d /nlm/ && \ 13 | rm -rf mathworks_network_license_manager_glnxa64.zip 14 | 15 | RUN ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 16 | 17 | # Add "lmgr" user in the lmadmin group 18 | RUN groupadd lmadmin && \ 19 | adduser --gid lmadmin --shell /bin/bash --comment "" lmgr 20 | 21 | COPY ./docker-entrypoint.sh /docker-entrypoint.sh 22 | ENTRYPOINT ["/docker-entrypoint.sh"] 23 | -------------------------------------------------------------------------------- /network-license-manager/README.md: -------------------------------------------------------------------------------- 1 | # Docker Container for Network License Manager 2 | 3 | This repository allows you to install and start a license server with a single command using a Docker® container image and Docker Compose file for Network License Manager. 4 | 5 | ### Requirements 6 | * Docker (with Docker Engine 18.06.0 or higher) 7 | * Linux® host 8 | * Network License File for the Linux host 9 | 10 | ## Run Network License Server Instance 11 | 12 | ### Get Sources 13 | 14 | Download this container image either by cloning or downloading this repository from GitHub®, 15 | and navigate to the `network-license-manager` folder. 16 | ```bash 17 | git clone https://github.com/mathworks-ref-arch/container-images.git 18 | cd container-images/network-license-manager 19 | ``` 20 | 21 | ### Provide License File 22 | 23 | Copy your [network license file](https://www.mathworks.com/help/install/ug/network-license-files.html) to the `licenses` folder within the `network-license-manager` folder of the repository as `license.dat`. Network License Manager will use this license. 24 | 25 | For more information about license files, see [support article](https://www.mathworks.com/matlabcentral/answers/116637-what-are-the-differences-between-the-license-lic-license-dat-network-lic-and-license_info-xml-lic#answer_124791). 26 | 27 | ### Run Container Image 28 | 29 | Run the container image with Docker Compose. The container image must be run on the machine for which the network license file is activated. 30 | ```bash 31 | docker compose up 32 | ``` 33 | 34 | This command starts the license server. Logs are written to the terminal as well as to the `logs` folder within the `network-license-manager` folder of the repository. 35 | 36 | To stop the container, either press `Ctrl+C` or use this command. 37 | ```bash 38 | docker compose down 39 | ``` 40 | 41 | #### Network License Manager Port Lifetime 42 | 43 | If you stop and restart the container within a short time (one to two minutes), you may see the following error from the Network License Manager: "Failed to open the TCP port number in the license". This occurs because the operating system may keep the required port temporarily open. To resolve this issue, wait a short time (one to two minutes) and restart the container. 44 | 45 | ## Technical Support 46 | If you require assistance or have a request for additional features or capabilities, contact [MathWorks Technical Support](https://www.mathworks.com/support/contact_us.html) with the relevant `logs`. 47 | 48 | ---- 49 | 50 | Copyright 2024-2025 The MathWorks, Inc. 51 | 52 | ---- -------------------------------------------------------------------------------- /network-license-manager/compose.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | 3 | version: "3.8" 4 | 5 | services: 6 | network-license-manager: 7 | image: ghcr.io/mathworks-ref-arch/container-images/network-license-manager:latest 8 | # To build the image locally instead of using the hosted image, 9 | # comment out the "image:" line and uncomment the "build:" line. 10 | # build: . 11 | network_mode: host 12 | init: true 13 | restart: on-failure 14 | volumes: 15 | - ./licenses:/usr/local/MATLAB/licenses/:ro 16 | - ./logs:/tmp/log/mathworks 17 | -------------------------------------------------------------------------------- /network-license-manager/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2024 The MathWorks, Inc. 4 | 5 | LOG_FILE="/tmp/log/mathworks/logs.txt" 6 | LICENSE_FILE="/usr/local/MATLAB/licenses/license.dat" 7 | 8 | lmgrdPID="" # lmgrdPID will store the lmgrd PID once started 9 | 10 | echo_and_log() { 11 | echo "$1" | tee -a "${LOG_FILE}" 12 | } 13 | 14 | shutdown_run=0 15 | _term() { 16 | if [[ $shutdown_run -eq 0 ]]; then 17 | shutdown_run=1 18 | else 19 | return 20 | fi 21 | 22 | # Only kill lmgrd if it is still running 23 | if kill -0 $lmgrdPID 2>/dev/null; then 24 | echo_and_log "Shutting down License Manager." 25 | runuser -u lmgr -- /nlm/etc/glnxa64/lmutil lmdown -q -force -c $LICENSE_FILE | tee -a $LOG_FILE & 26 | shutdown_status=$? 27 | if [ $shutdown_status -ne 0 ]; then 28 | echo_and_log "Unable to shut down License Manager." 29 | else 30 | echo_and_log "License Manager has shut down." 31 | fi 32 | # Propagate shutdown exit code in case of errors 33 | exit $shutdown_status 34 | fi 35 | } 36 | 37 | trap _term SIGTERM EXIT 38 | 39 | touch $LOG_FILE 40 | echo_and_log "Starting License Manager." 41 | chown lmgr $LOG_FILE 42 | chmod 666 $LOG_FILE 43 | runuser -u lmgr -- /nlm/etc/glnxa64/lmgrd -z -2 -p -local -c $LICENSE_FILE | tee -a $LOG_FILE & 44 | lmgrdPID=$! 45 | wait "${lmgrdPID}" 46 | -------------------------------------------------------------------------------- /network-license-manager/licenses/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !README.md 4 | -------------------------------------------------------------------------------- /network-license-manager/licenses/README.md: -------------------------------------------------------------------------------- 1 | Add your license file to this folder as `license.dat`. 2 | 3 | For more information about license files, see [support article](https://www.mathworks.com/matlabcentral/answers/116637-what-are-the-differences-between-the-license-lic-license-dat-network-lic-and-license_info-xml-lic#answer_124791). 4 | 5 | ---- 6 | 7 | Copyright 2024 The MathWorks, Inc. 8 | 9 | ---- -------------------------------------------------------------------------------- /network-license-manager/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /network-license-manager/tests/.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | logs/* 3 | licenses/* 4 | **/license.dat 5 | tmp/** -------------------------------------------------------------------------------- /network-license-manager/tests/requirements.txt: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | 3 | docker 4 | pytest-testinfra 5 | -------------------------------------------------------------------------------- /network-license-manager/tests/setup_gen_licfile.sh: -------------------------------------------------------------------------------- 1 | # !/bin/bash 2 | 3 | # MATLAB_LICENSE_FILE is set by the action 4 | 5 | # write the license file 6 | mkdir -p $(dirname $LICENSE_FILE_PATH) 7 | echo "# BEGIN--------------BEGIN--------------BEGIN" > $LICENSE_FILE_PATH 8 | echo "SERVER ${HOSTNAME} ${MAC_ADDRESS//:} ${PORT}" >> $LICENSE_FILE_PATH 9 | echo "DAEMON MLM ./MLM PORT=27100" >> $LICENSE_FILE_PATH 10 | echo "${MATLAB_LICENSE_FILE}" >> $LICENSE_FILE_PATH 11 | echo "# END-----------------END-----------------END" >> $LICENSE_FILE_PATH 12 | -------------------------------------------------------------------------------- /network-license-manager/tests/test_nlm_image.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | 3 | import os 4 | import docker 5 | import testinfra 6 | import unittest 7 | import utils 8 | 9 | 10 | IMAGE_NAME = os.getenv("IMAGE_NAME") 11 | 12 | 13 | class TestNLMImage(unittest.TestCase): 14 | """Test the network license manager image without starting the lmgrd process""" 15 | 16 | @classmethod 17 | def setUpClass(cls): 18 | client = docker.from_env() 19 | cls.addClassCleanup(lambda: client.close()) 20 | 21 | container = client.containers.run( 22 | image=IMAGE_NAME, 23 | entrypoint="/bin/bash", 24 | stdin_open=True, 25 | detach=True, 26 | ) 27 | cls.addClassCleanup(lambda: container.remove(force=True)) 28 | 29 | utils.wait_for_container_status(client, container.id, "running") 30 | cls.host = testinfra.get_host("docker://" + container.id) 31 | 32 | def test_tmp_dir_exists(self): 33 | "Test that the /usr/tmp directory exists. It is required by the network license manager" 34 | self.assertTrue(self.host.file("/usr/tmp").exists) 35 | 36 | def test_binaries_are_installed(self): 37 | """Test that the executables called in the entrypoint are actually installed""" 38 | expected_binpaths = ["/nlm/etc/glnxa64/lmgrd", "/nlm/etc/glnxa64/lmutil"] 39 | for binpath in expected_binpaths: 40 | with self.subTest(binary=binpath): 41 | self.assertTrue(self.host.file(binpath).is_executable) 42 | 43 | def test_user(self): 44 | """Test that the expected username exists and it belongs to the expected group""" 45 | expected_user = "lmgr" 46 | expected_group = "lmadmin" 47 | self.assertTrue(self.host.user(expected_user).exists) 48 | self.assertIn(expected_group, self.host.user(expected_user).groups) 49 | 50 | def test_archives_are_deleted(self): 51 | """Test that the archive files downloaded while building the image are removed""" 52 | find = self.host.run("find -name *.zip") 53 | self.assertEqual(0, find.exit_status, find.stderr) 54 | self.assertEqual("", find.stdout) 55 | 56 | 57 | if __name__ == "__main__": 58 | unittest.main() 59 | -------------------------------------------------------------------------------- /network-license-manager/tests/utils.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | 3 | import re 4 | import time 5 | 6 | 7 | def wait_for_logs(container, msg, timeout=60): 8 | logs = container.logs(stream=True) 9 | start = time.time() 10 | while time.time() - start < timeout: 11 | if re.search(msg, next(logs).decode()): 12 | logs.close() 13 | return 14 | else: 15 | logs.close() 16 | raise TimeoutError(f"Timeout reached while waiting for message '{msg}'") 17 | 18 | 19 | def wait_for(bool_fnc, timeout=60, interval=0.3): 20 | start = time.time() 21 | while time.time() - start <= timeout and not bool_fnc(): 22 | time.sleep(interval) 23 | if time.time() - start > timeout: 24 | raise TimeoutError( 25 | f"The condition {bool_fnc.__name__} is still false after {timeout} seconds" 26 | ) 27 | 28 | 29 | def wait_for_container_status(client, id, status, timeout=30): 30 | """Wait until the container is in a desired state""" 31 | 32 | def container_in_desired_state(): 33 | return client.containers.get(id).status == status 34 | 35 | try: 36 | wait_for(container_in_desired_state, timeout) 37 | except TimeoutError: 38 | raise RuntimeError(f"The container {id} is {client.containers.get(id).status}.") 39 | -------------------------------------------------------------------------------- /polyspace-deps/README.md: -------------------------------------------------------------------------------- 1 | # Polyspace Dependencies 2 | 3 | > :warning: **Starting in R2024a, the `polyspace-deps` repository will no longer receive updates or support.** 4 | > 5 | > To streamline the container workflows for Polyspace products, the libraries and other dependencies required to run Polyspace products in containers are now included in the `Dockerfile` of the corresponding products. To continue using Polyspace products in Docker containers, see: 6 | > 7 | >* [Polyspace Bug Finder and Code Prover Server](https://github.com/mathworks-ref-arch/polyspace-bug-finder-server-dockerfile) 8 | >* [Polyspace Test](https://github.com/mathworks-ref-arch/polyspace-test-dockerfile) 9 | 10 | This repository includes the libraries and other dependencies required to run the Polyspace Bug Finder™ Server™ and Polyspace Code Prover™ Server™ MathWorks® products. These dependencies are installed during the build of a Polyspace Bug Finder/Code Prover Server container image. 11 | 12 | To build and run a Polyspace Bug Finder Server and Polyspace Code Prover Server container, follow [these instructions](https://github.com/mathworks-ref-arch/polyspace-bug-finder-server-dockerfile) . 13 | 14 | > **Note: The Polyspace dependencies do not include the Polyspace Bug Finder Server and Polyspace Code Prover Server products.** 15 | 16 | 17 | ## Supported Tags 18 | 19 | | Tags | Polyspace Version | Operating System | Base Image | Usage Notes | 20 | | ------------ |:--------------:| ---------------- |----------- | ----------- | 21 | |[`latest`, `r2023b`, `r2023b-ubuntu22.04`, `R2023b`, `R2023b-ubuntu22.04`](https://github.com/mathworks-ref-arch/container-images/blob/main/polyspace-deps/r2023b/ubuntu22.04/Dockerfile) | R2023b | Ubuntu 22.04 | ubuntu:22.04 | | 22 | |[`r2023a`, `r2023a-ubuntu20.04`, `R2023a`, `R2023a-ubuntu20.04`](https://github.com/mathworks-ref-arch/container-images/blob/main/polyspace-deps/r2023a/ubuntu20.04/Dockerfile) | R2023a | Ubuntu 20.04 | ubuntu:20.04 | | 23 | |[`r2022b`, `r2022b-ubuntu20.04`, `R2022b`, `R2022b-ubuntu20.04`](https://github.com/mathworks-ref-arch/container-images/blob/main/polyspace-deps/r2022b/ubuntu20.04/Dockerfile) | R2022b | Ubuntu 20.04 | ubuntu:20.04 | | 24 | 25 | ## License 26 | The license for this container is available [here](https://github.com/mathworks-ref-arch/container-images/blob/main/LICENSE.md). 27 | 28 | ## Security Reporting 29 | To report suspected security issues, follow [these instructions](https://github.com/mathworks-ref-arch/container-images/blob/main/SECURITY.md). 30 | 31 | ## Technical Support 32 | If you require assistance or have a request for additional features or capabilities, please contact [MathWorks Technical Support](https://www.mathworks.com/support/contact_us.html). 33 | 34 | ---- 35 | 36 | Copyright 2022-2024 The MathWorks, Inc. 37 | 38 | ---- -------------------------------------------------------------------------------- /polyspace-deps/r2022b/ubuntu20.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2022 The MathWorks, Inc. 2 | FROM ubuntu:20.04 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC" 7 | 8 | COPY base-dependencies.txt /tmp/base-dependencies.txt 9 | 10 | RUN apt-get update && \ 11 | apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` && \ 12 | apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 13 | 14 | -------------------------------------------------------------------------------- /polyspace-deps/r2022b/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | libasound2 3 | libatk-bridge2.0-0 4 | libatk1.0-0 5 | libatspi2.0-0 6 | libc6 7 | libcairo-gobject2 8 | libcairo2 9 | libcrypt1 10 | libcups2 11 | libdbus-1-3 12 | libdrm2 13 | libfontconfig1 14 | libgbm1 15 | libgdk-pixbuf2.0-0 16 | libglib2.0-0 17 | libgstreamer-plugins-base1.0-0 18 | libgstreamer1.0-0 19 | libgtk-3-0 20 | libnspr4 21 | libnss3 22 | libopencv-core4.2 23 | libpam0g 24 | libpango-1.0-0 25 | libpangocairo-1.0-0 26 | libpangoft2-1.0-0 27 | libsndfile1 28 | libuuid1 29 | libx11-6 30 | libx11-xcb1 31 | libxcb-dri3-0 32 | libxcb1 33 | libxcomposite1 34 | libxcursor1 35 | libxdamage1 36 | libxext6 37 | libxfixes3 38 | libxft2 39 | libxi6 40 | libxinerama1 41 | libxrandr2 42 | libxrender1 43 | libxt6 44 | libxtst6 45 | libxxf86vm1 46 | zlib1g 47 | locales 48 | locales-all 49 | libgl1 50 | -------------------------------------------------------------------------------- /polyspace-deps/r2023a/ubuntu20.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | FROM ubuntu:20.04 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC" 7 | 8 | COPY base-dependencies.txt /tmp/base-dependencies.txt 9 | 10 | RUN apt-get update && \ 11 | apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` && \ 12 | apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 13 | 14 | -------------------------------------------------------------------------------- /polyspace-deps/r2023a/ubuntu20.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | libasound2 3 | libatk-bridge2.0-0 4 | libatk1.0-0 5 | libatspi2.0-0 6 | libc6 7 | libcairo-gobject2 8 | libcairo2 9 | libcrypt1 10 | libcups2 11 | libdbus-1-3 12 | libdrm2 13 | libfontconfig1 14 | libgbm1 15 | libgdk-pixbuf2.0-0 16 | libglib2.0-0 17 | libgstreamer-plugins-base1.0-0 18 | libgstreamer1.0-0 19 | libgtk-3-0 20 | libnspr4 21 | libnss3 22 | libopencv-core4.2 23 | libpam0g 24 | libpango-1.0-0 25 | libpangocairo-1.0-0 26 | libpangoft2-1.0-0 27 | libsndfile1 28 | libuuid1 29 | libx11-6 30 | libx11-xcb1 31 | libxcb-dri3-0 32 | libxcb1 33 | libxcomposite1 34 | libxcursor1 35 | libxdamage1 36 | libxext6 37 | libxfixes3 38 | libxft2 39 | libxi6 40 | libxinerama1 41 | libxrandr2 42 | libxrender1 43 | libxt6 44 | libxtst6 45 | libxxf86vm1 46 | zlib1g 47 | locales 48 | locales-all 49 | libgl1 50 | -------------------------------------------------------------------------------- /polyspace-deps/r2023b/ubuntu22.04/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | FROM ubuntu:22.04 3 | 4 | LABEL maintainer="The MathWorks, Inc." 5 | 6 | ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC" 7 | 8 | COPY base-dependencies.txt /tmp/base-dependencies.txt 9 | 10 | RUN apt-get update && \ 11 | apt-get install --no-install-recommends -y `cat /tmp/base-dependencies.txt` && \ 12 | apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* 13 | 14 | -------------------------------------------------------------------------------- /polyspace-deps/r2023b/ubuntu22.04/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | ca-certificates 2 | libasound2 3 | libc6 4 | libcairo-gobject2 5 | libcairo2 6 | libcrypt1 7 | libcups2 8 | libdrm2 9 | libgbm1 10 | libgdk-pixbuf-2.0-0 11 | libglib2.0-0 12 | libgstreamer-plugins-base1.0-0 13 | libgstreamer1.0-0 14 | libgtk-3-0 15 | libice6 16 | libnspr4 17 | libnss3 18 | libpam0g 19 | libpango-1.0-0 20 | libpangocairo-1.0-0 21 | libpangoft2-1.0-0 22 | libsndfile1 23 | libuuid1 24 | libwayland-client0 25 | libxcomposite1 26 | libxcursor1 27 | libxdamage1 28 | libxfixes3 29 | libxft2 30 | libxinerama1 31 | libxrandr2 32 | libxt6 33 | libxtst6 34 | libxxf86vm1 35 | zlib1g 36 | locales 37 | locales-all 38 | libgl1 39 | -------------------------------------------------------------------------------- /tests/.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | logs/* 3 | licenses/* 4 | **/license.dat 5 | tmp/** 6 | .venv/** 7 | -------------------------------------------------------------------------------- /tests/matlab-deps/.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | .vscode/ -------------------------------------------------------------------------------- /tests/matlab-deps/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/container-images/8aaadcfba6c9ec437294203022825ec2e8e7817e/tests/matlab-deps/__init__.py -------------------------------------------------------------------------------- /tests/matlab-deps/test_ubi8.py: -------------------------------------------------------------------------------- 1 | """Test class for matlab-deps:ubi8 Docker images.""" 2 | 3 | # Copyright 2024 The MathWorks, Inc. 4 | 5 | import unittest 6 | import importlib 7 | 8 | test_ubi = importlib.import_module("matlab-deps.utils.test_ubi") 9 | PLATFORM = "ubi8" 10 | 11 | 12 | class TestUbi8(test_ubi.TestUbi): 13 | def setUp(self): 14 | """Skip this test class unless the platform is 'ubi8'""" 15 | if not PLATFORM in self.platform: 16 | self.skipTest( 17 | f"skipping matlab-deps:{PLATFORM} test suite for {self.container.image.tags}" 18 | ) 19 | 20 | 21 | ###################################################################### 22 | 23 | if __name__ == "__main__": 24 | unittest.main() 25 | -------------------------------------------------------------------------------- /tests/matlab-deps/test_ubi9.py: -------------------------------------------------------------------------------- 1 | """Test class for matlab-deps:ubi9 Docker images.""" 2 | 3 | # Copyright 2024 The MathWorks, Inc. 4 | 5 | import unittest 6 | import importlib 7 | 8 | test_ubi = importlib.import_module("matlab-deps.utils.test_ubi") 9 | PLATFORM = "ubi9" 10 | 11 | 12 | class TestUbi9(test_ubi.TestUbi): 13 | def setUp(self): 14 | """Skip this test class unless the platform is 'ubi9'""" 15 | if not PLATFORM in self.platform: 16 | self.skipTest( 17 | f"skipping matlab-deps:{PLATFORM} test suite for {self.container.image.tags}" 18 | ) 19 | 20 | 21 | ###################################################################### 22 | 23 | if __name__ == "__main__": 24 | unittest.main() 25 | -------------------------------------------------------------------------------- /tests/matlab-deps/test_ubuntu1804.py: -------------------------------------------------------------------------------- 1 | """Test class for matlab-deps:ubuntu18.04 Docker images.""" 2 | 3 | # Copyright 2024 The MathWorks, Inc. 4 | 5 | import unittest 6 | import importlib 7 | 8 | test_ubuntu = importlib.import_module("matlab-deps.utils.test_ubuntu") 9 | PLATFORM = "ubuntu18.04" 10 | 11 | 12 | class TestUbuntu1804(test_ubuntu.TestUbuntu): 13 | def setUp(self): 14 | """Skip this test class unless the platform is 'ubuntu18.04'""" 15 | if not PLATFORM in self.platform: 16 | self.skipTest( 17 | f"skipping matlab-deps:{PLATFORM} test suite for {self.container.image.tags}" 18 | ) 19 | 20 | 21 | ###################################################################### 22 | 23 | if __name__ == "__main__": 24 | unittest.main() 25 | -------------------------------------------------------------------------------- /tests/matlab-deps/test_ubuntu2004.py: -------------------------------------------------------------------------------- 1 | """Test class for matlab-deps:ubuntu20.04 Docker images.""" 2 | 3 | # Copyright 2024 The MathWorks, Inc. 4 | 5 | import unittest 6 | import importlib 7 | 8 | test_ubuntu = importlib.import_module("matlab-deps.utils.test_ubuntu") 9 | PLATFORM = "ubuntu20.04" 10 | 11 | 12 | class TestUbuntu2004(test_ubuntu.TestUbuntu): 13 | def setUp(self): 14 | """Skip this test class unless the platform is 'ubuntu20.04'""" 15 | if not PLATFORM in self.platform: 16 | self.skipTest( 17 | f"skipping matlab-deps:{PLATFORM} test suite for {self.container.image.tags}" 18 | ) 19 | 20 | def test_glibc_fix_packages_are_installed(self): 21 | """test that the packages required for the glibc fix are installed""" 22 | releases_to_skip = ["r2020b", "r2021a"] 23 | if self.release.lower() in releases_to_skip: 24 | self.skipTest( 25 | f"The glibc fix is not required for these MATLAB releases {self.release}" 26 | ) 27 | 28 | packages = ["libcrypt-dev", "linux-libc-dev"] 29 | for pkg in packages: 30 | with self.subTest(package_name=pkg): 31 | self.assertTrue(self.host.package(pkg).is_installed) 32 | 33 | 34 | ###################################################################### 35 | 36 | if __name__ == "__main__": 37 | unittest.main() 38 | -------------------------------------------------------------------------------- /tests/matlab-deps/test_ubuntu2204.py: -------------------------------------------------------------------------------- 1 | """Test class for matlab-deps:ubuntu22.04 Docker images.""" 2 | 3 | # Copyright 2024 The MathWorks, Inc. 4 | 5 | import unittest 6 | import importlib 7 | 8 | test_ubuntu = importlib.import_module("matlab-deps.utils.test_ubuntu") 9 | 10 | 11 | PLATFORM = "ubuntu22.04" 12 | 13 | 14 | class TestUbuntu2204(test_ubuntu.TestUbuntu): 15 | def setUp(self): 16 | """Skip this test class unless the platform is 'ubuntu22.04'""" 17 | if not PLATFORM in self.platform: 18 | self.skipTest( 19 | f"skipping matlab-deps:{PLATFORM} test suite for {self.container.image.tags}" 20 | ) 21 | 22 | 23 | ###################################################################### 24 | 25 | if __name__ == "__main__": 26 | unittest.main() 27 | -------------------------------------------------------------------------------- /tests/matlab-deps/test_ubuntu2404.py: -------------------------------------------------------------------------------- 1 | """Test class for matlab-deps:ubuntu24.04 Docker images.""" 2 | 3 | # Copyright 2024 The MathWorks, Inc. 4 | 5 | import unittest 6 | import importlib 7 | 8 | test_ubuntu = importlib.import_module("matlab-deps.utils.test_ubuntu") 9 | 10 | 11 | PLATFORM = "ubuntu24.04" 12 | 13 | 14 | class TestUbuntu2404(test_ubuntu.TestUbuntu): 15 | def setUp(self): 16 | """Skip this test class unless the platform is 'ubuntu24.04'""" 17 | if not PLATFORM in self.platform: 18 | self.skipTest( 19 | f"skipping matlab-deps:{PLATFORM} test suite for {self.container.image.tags}" 20 | ) 21 | 22 | 23 | ###################################################################### 24 | 25 | if __name__ == "__main__": 26 | unittest.main() 27 | -------------------------------------------------------------------------------- /tests/matlab-deps/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/container-images/8aaadcfba6c9ec437294203022825ec2e8e7817e/tests/matlab-deps/utils/__init__.py -------------------------------------------------------------------------------- /tests/matlab-deps/utils/base.py: -------------------------------------------------------------------------------- 1 | """Base test class for matlab-deps Docker images.""" 2 | 3 | # Copyright 2021-2024 The MathWorks, Inc. 4 | 5 | import unittest 6 | import docker 7 | import testinfra 8 | from . import release_platform 9 | from pytools import helper 10 | 11 | 12 | class TestCase(unittest.TestCase): 13 | @classmethod 14 | def setUpClass(cls): 15 | image_name = helper.get_image_name() 16 | getter = release_platform.Getter(image_name) 17 | 18 | cls.dependencies_list = helper.parse_file_to_list(getter.deps_list_filepath) 19 | cls.release = getter.release 20 | cls.platform = getter.platform 21 | cls.client = docker.from_env() 22 | cls.container = cls.client.containers.run( 23 | image=image_name, 24 | detach=True, 25 | stdin_open=True, 26 | entrypoint="/bin/bash", 27 | ) 28 | cls.host = testinfra.get_host("docker://" + cls.container.id) 29 | 30 | @classmethod 31 | def tearDownClass(cls): 32 | cls.container.stop(timeout=0) 33 | cls.container.remove() 34 | cls.client.close() 35 | 36 | ###################################################################### 37 | 38 | def test_packages_present(self): 39 | """Test that the software packages listed below are installed in the container""" 40 | for name in self.dependencies_list: 41 | with self.subTest(package_name=name): 42 | self.assertTrue(self.host.package(name).is_installed) 43 | 44 | def test_absent_matlab_dir(self): 45 | """Test that matlab is not install in container""" 46 | dirlist = ["/usr/local/bin", "/usr/bin", "/opt"] 47 | for dir in dirlist: 48 | with self.subTest(dir=dir): 49 | self.assertNotIn("matlab", self.host.file(dir).listdir()) 50 | 51 | def test_matlab_absent(self): 52 | """Test that the command 'matlab' does not work""" 53 | self.assertNotEqual(self.host.run("matlab").rc, 0) 54 | 55 | def test_unset_envs(self): 56 | """Test that some environment variables are not persisted in the images.""" 57 | envs = ["DEBIAN_FRONTEND", "TZ"] 58 | for env in envs: 59 | with self.subTest(env=env): 60 | val = self.host.environment().get(env) 61 | self.assertIsNone(val, f"{env} was expected to be unset but got {val}") 62 | 63 | 64 | ###################################################################### 65 | 66 | if __name__ == "__main__": 67 | unittest.main() 68 | -------------------------------------------------------------------------------- /tests/matlab-deps/utils/release_platform.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | 3 | """Getter class to get platform and release info from a system-under-test (SUT) name.""" 4 | 5 | from pathlib import Path 6 | import re 7 | import os 8 | 9 | _MATLAB_DEPS_ROOT_ = Path(__file__).parents[3] / "matlab-deps" 10 | DEPENDENCIES_LIST_FILENAME = "base-dependencies.txt" 11 | 12 | ubuntu_re = re.compile("ubuntu[0-9]{2}.[0-9]{2}") 13 | ubi_re = re.compile("ubi[0-9]") 14 | aws_re = re.compile("aws-batch") 15 | platform_re = re.compile(f"({ubuntu_re.pattern})|({ubi_re.pattern})|({aws_re.pattern})") 16 | 17 | release_re = re.compile("R20[0-9]{2}[ab]", re.IGNORECASE) 18 | 19 | 20 | def is_valid_release(str): 21 | match = release_re.fullmatch(str) 22 | if match: 23 | return True 24 | else: 25 | return False 26 | 27 | 28 | def get_deps_list_filepath(release, platform): 29 | return str( 30 | _MATLAB_DEPS_ROOT_ / release.lower() / platform / DEPENDENCIES_LIST_FILENAME 31 | ) 32 | 33 | 34 | class Getter: 35 | def __init__(self, name) -> None: 36 | self.name = name 37 | 38 | @property 39 | def release(self): 40 | """Get the release from the image's name. If not possible, get the release from the source repo""" 41 | match = release_re.search(self.name) 42 | if match: 43 | return match.group(0) 44 | else: # by default, return the latest release available in the container-images repository 45 | release_subdirs = list( 46 | filter( 47 | is_valid_release, 48 | os.listdir(str(_MATLAB_DEPS_ROOT_)), 49 | ) 50 | ) 51 | release_subdirs.sort() 52 | return release_subdirs[-1] 53 | 54 | @property 55 | def platform(self): 56 | """Get the platform from the image's name. If not possible, get the platform from the source repo""" 57 | match = platform_re.search(self.name) 58 | if match: 59 | return match.group(0) 60 | else: # if there is no match, look the ubuntu version for the tested release and return the latest 61 | matlab_deps_root = str(_MATLAB_DEPS_ROOT_) 62 | 63 | ubuntu_platforms = list( 64 | filter( 65 | lambda x: ubuntu_re.fullmatch(x) is not None, 66 | os.listdir(f"{matlab_deps_root}/{self.release.lower()}"), 67 | ) 68 | ) 69 | ubuntu_platforms.sort() 70 | return ubuntu_platforms[-1] 71 | 72 | @property 73 | def deps_list_filepath(self): 74 | return get_deps_list_filepath(self.release, self.platform) 75 | -------------------------------------------------------------------------------- /tests/matlab-deps/utils/test_ubi.py: -------------------------------------------------------------------------------- 1 | """Test class for matlab-deps:ubi* Docker images.""" 2 | 3 | # Copyright 2023-2024 The MathWorks, Inc. 4 | 5 | import unittest 6 | from . import base 7 | 8 | UBI = "ubi" 9 | 10 | 11 | class TestUbi(base.TestCase): 12 | 13 | def test_packages_are_upgraded(self): 14 | """Test that the packages installed in the container are updated to the latest version""" 15 | cmd = "yum check-update" 16 | cmd_res = self.host.run(cmd) 17 | self.assertNotEqual( 18 | cmd_res.rc, 19 | 100, # YUM/DNF exit code will be 100 when there are updates available 20 | f"The command\n\n{cmd}\n\nshowed that some packages are not up-to-date. The output is:\n\n{cmd_res.stdout}", 21 | ) 22 | 23 | def test_package_manager_cache_is_clean(self): 24 | """Test that the yum/dnf cache got cleaned after installation of the packages.""" 25 | for filename in self.host.file("/var/cache/dnf").listdir(): 26 | fullname = "/var/cache/dnf/" + filename 27 | if self.host.file(fullname).is_file: 28 | # no .solv/.solvx files in /var/cache/dnf 29 | with self.subTest(filename=filename): 30 | self.assertNotRegex(filename, ".solv") 31 | elif self.host.file(fullname).is_directory: 32 | # var/cache/dnf/ubi-8-appstream-..../repodata is empty 33 | # var/cache/dnf/ubi-8-baseos-..../repodata is empty 34 | # var/cache/dnf/ubi-8-codeready-builder-..../repodata is empty 35 | fullname = fullname + "/repodata" 36 | with self.subTest(dirname=fullname): 37 | self.assertEqual( 38 | len(self.host.file(fullname).listdir()), 39 | 0, 40 | f"{fullname} is not empty", 41 | ) 42 | 43 | 44 | ###################################################################### 45 | 46 | if __name__ == "__main__": 47 | unittest.main() 48 | -------------------------------------------------------------------------------- /tests/matlab-deps/utils/test_ubuntu.py: -------------------------------------------------------------------------------- 1 | """Test class for matlab-deps:ubuntu Docker images.""" 2 | 3 | # Copyright 2023-2024 The MathWorks, Inc. 4 | 5 | import re 6 | import unittest 7 | from . import base 8 | 9 | UBUNTU = "ubuntu" 10 | 11 | 12 | class TestUbuntu(base.TestCase): 13 | 14 | def test_packages_are_upgraded(self): 15 | """Test that the packages installed in the container are updated to the latest version""" 16 | # run `apt-get -s upgrade` to check if ANY package needs to be upgraded. 17 | # Alternatives are: 18 | # - `apt-get -s install DEPENDENCIES_LIST`: which will only run on the MATLAB dependencies packages 19 | # - `apt list --upgreadeable` which does not have a stable interface 20 | cmd = "apt-get -s upgrade" 21 | cmd_res = self.host.run(cmd) 22 | self.assertTrue(cmd_res.succeeded, f"command {cmd} failed:\n{cmd_res.stderr}") 23 | 24 | installable_pkg_re = "The following packages will be installed" 25 | upgradeable_pkg_re = "The following packages will be upgraded" 26 | self.assertNotRegex( 27 | cmd_res.stdout, 28 | re.compile(f"({installable_pkg_re})|({upgradeable_pkg_re})"), 29 | f"The command\n\n{cmd}\n\nshowed that some packages are not up-to-date. The output is:\n\n{cmd_res.stdout}", 30 | ) 31 | 32 | def test_package_manager_cache_is_clean(self): 33 | """Test that the apt-get cache got cleaned after installation of the packages.""" 34 | self.assertSetEqual( 35 | set(self.host.file("/var/cache/apt/archives").listdir()), 36 | {"lock", "partial"}, 37 | ) 38 | 39 | 40 | ###################################################################### 41 | 42 | if __name__ == "__main__": 43 | unittest.main() 44 | -------------------------------------------------------------------------------- /tests/matlab/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/container-images/8aaadcfba6c9ec437294203022825ec2e8e7817e/tests/matlab/__init__.py -------------------------------------------------------------------------------- /tests/matlab/common_setup.sh: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | 3 | common_setup() { 4 | 5 | bats_load_library bats-support 6 | bats_load_library bats-assert 7 | 8 | #--- SET GLOBAL VARIABLES 9 | TESTDIR="$(dirname "$(realpath "${BATS_TEST_FILENAME}")")" 10 | SRCDIR="$(realpath "${TESTDIR}"/../src)" 11 | 12 | #--- SUPPORT PACKAGES, HELPER METHODS AND MOCKS 13 | for file in "${TESTDIR}"/shtools/*.sh; do 14 | if [ -f "${file}" ]; then 15 | load "${file}" 16 | fi 17 | done 18 | } 19 | -------------------------------------------------------------------------------- /tests/matlab/matlab/AvailableProductsTest.m: -------------------------------------------------------------------------------- 1 | % Copyright 2021-2024 The MathWorks, Inc. 2 | 3 | classdef AvailableProductsTest < matlab.unittest.TestCase 4 | % AVAILABLEPRODUCTSTEST is developed for the MATLAB Docker images. 5 | % AvailableProductsTest checks that there are no extra toolboxes available in 6 | % the MATLAB Docker image distribution. 7 | 8 | methods(Test) 9 | function testOnlyMATLABisInstalled( testCase ) 10 | installedAddons= matlab.addons.installedAddons(); 11 | testCase.verifyEmpty(installedAddons); 12 | end % testOnlyMATLABisInstalled 13 | 14 | 15 | end % methods(Test) 16 | end % classdef 17 | -------------------------------------------------------------------------------- /tests/matlab/matlab/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/container-images/8aaadcfba6c9ec437294203022825ec2e8e7817e/tests/matlab/matlab/__init__.py -------------------------------------------------------------------------------- /tests/matlab/matlab/run_AvailableProductsTest.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | 3 | """A test runner class for the AvailableProductsTest.m test file""" 4 | 5 | import re 6 | import unittest 7 | from pathlib import Path 8 | 9 | import docker 10 | from pytools import dockertool, helper 11 | 12 | 13 | class Run_AvailableProductsTest(unittest.TestCase): 14 | """A test runner class for the AvailableProductsTest.m test file""" 15 | 16 | @classmethod 17 | def setUpClass(cls) -> None: 18 | cls.client = docker.from_env() 19 | cls.image_name = helper.get_image_name() 20 | cls.client.images.get(cls.image_name) 21 | 22 | @classmethod 23 | def tearDownClass(cls) -> None: 24 | cls.client.close() 25 | 26 | def test_available_products(self): 27 | """Run the AvailableProductsTest.m MATLAB test file""" 28 | m_filename = "AvailableProductsTest.m" 29 | m_filepath = str(Path(__file__).parent.resolve() / m_filename) 30 | 31 | runner = dockertool.MATLABTestRunner(self.client, m_filepath) 32 | 33 | exit_code, logs = runner.run() 34 | self.assertNotRegex( 35 | logs, re.compile("At least one test failed", re.IGNORECASE), logs 36 | ) 37 | self.assertEqual( 38 | exit_code, 0, "The Docker container exited with a non-zero status code" 39 | ) 40 | 41 | 42 | if __name__ == "__main__": 43 | unittest.main() 44 | -------------------------------------------------------------------------------- /tests/matlab/matlab/test_ddux.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2024 The MathWorks, Inc. 2 | 3 | """Run the tests to check for DDUX information set in the image""" 4 | 5 | import unittest 6 | 7 | from ..shared import test_ddux 8 | 9 | 10 | class TestDDUX(test_ddux.TestDDUX): 11 | """Test the DDUX information set when running the container""" 12 | 13 | def get_tag_value_pairs(self): 14 | """Override this method in subclasses to provide different tag-value pairs""" 15 | return { 16 | "MW_CONTEXT_TAGS": "MATLAB:DOCKERHUB:V1", 17 | "MHLM_CONTEXT": "MATLAB_DOCKERHUB", 18 | } 19 | 20 | 21 | ################################################################################ 22 | 23 | 24 | if __name__ == "__main__": 25 | unittest.main() 26 | -------------------------------------------------------------------------------- /tests/matlab/matlab_deep_learning/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/container-images/8aaadcfba6c9ec437294203022825ec2e8e7817e/tests/matlab/matlab_deep_learning/__init__.py -------------------------------------------------------------------------------- /tests/matlab/matlab_deep_learning/run_DeepLearningAddonsTests.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | 3 | """Test runner for the DeepLearningAddonsTests.m test file""" 4 | 5 | import re 6 | import unittest 7 | from pathlib import Path 8 | 9 | import docker 10 | from pytools import dockertool, helper 11 | 12 | 13 | class Run_DeepLearningAddonsTests(unittest.TestCase): 14 | """A test runner class for the DeepLearningAddonsTests.m test file""" 15 | 16 | @classmethod 17 | def setUpClass(cls) -> None: 18 | cls.client = docker.from_env() 19 | cls.image_name = helper.get_image_name() 20 | cls.client.images.get(cls.image_name) 21 | 22 | @classmethod 23 | def tearDownClass(cls) -> None: 24 | cls.client.close() 25 | 26 | def test_dl_addons(self): 27 | """Run the DeepLearningAddonsTests.m MATLAB test file""" 28 | m_filename = "DeepLearningAddonsTests.m" 29 | m_filepath = str(Path(__file__).parent.resolve() / m_filename) 30 | 31 | runner = dockertool.MATLABTestRunner(self.client, m_filepath) 32 | 33 | exit_code, logs = runner.run() 34 | self.assertNotRegex( 35 | logs, re.compile("At least one test failed", re.IGNORECASE), logs 36 | ) 37 | self.assertEqual( 38 | exit_code, 0, "The Docker container exited with a non-zero status code" 39 | ) 40 | 41 | 42 | if __name__ == "__main__": 43 | unittest.main() 44 | -------------------------------------------------------------------------------- /tests/matlab/matlab_deep_learning/test_ddux.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2024 The MathWorks, Inc. 2 | 3 | """Run the tests to check for DDUX information set in the image""" 4 | 5 | import unittest 6 | 7 | from ..shared import test_ddux 8 | 9 | 10 | class TestDDUX(test_ddux.TestDDUX): 11 | """Test the DDUX information set when running the container""" 12 | 13 | def get_tag_value_pairs(self): 14 | """Override this method in subclasses to provide different tag-value pairs""" 15 | return { 16 | "MW_CONTEXT_TAGS": "MATLAB:DEEPLEARNING:DOCKERHUB:V1", 17 | "MHLM_CONTEXT": "MATLAB_DL_DOCKERHUB", 18 | } 19 | 20 | 21 | ################################################################################ 22 | 23 | 24 | if __name__ == "__main__": 25 | unittest.main() 26 | -------------------------------------------------------------------------------- /tests/matlab/run-bats-test.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # Copyright 2024 The MathWorks, Inc. 4 | 5 | # Get the current directory 6 | REPO_ROOT=$(git rev-parse --show-toplevel) 7 | 8 | OFFERING="matlab" 9 | 10 | # Get test directory 11 | TEST_DIR="${REPO_ROOT}/tests/${OFFERING}" 12 | 13 | # Get the source code directory 14 | BUILD_DIR="${REPO_ROOT}/${OFFERING}/build" 15 | 16 | # Run the Docker command with the resolved path 17 | docker run --rm --shm-size=512M -v "$TEST_DIR:/home/test" -v "$BUILD_DIR:/home/src" bats/bats:latest /home/test/tUtils.bats 18 | 19 | docker run --rm --shm-size=512M -v "$TEST_DIR:/home/test" -v "$BUILD_DIR:/home/src" bats/bats:latest /home/test/tRun.bats 20 | -------------------------------------------------------------------------------- /tests/matlab/shared/Startup.m: -------------------------------------------------------------------------------- 1 | % Copyright 2022-2024 The MathWorks, Inc. 2 | 3 | classdef Startup < matlab.unittest.TestCase 4 | % STARTUP is developed for the MATLAB Docker images. 5 | % Startup checks that the startup.m script is functioning correctly. 6 | % It checks that the environment variables for the proxy host, port, 7 | % username and password are correctly set in MATLAB Docker image container 8 | % when specified using the docker -e command. 9 | 10 | properties 11 | WebSettings; 12 | end 13 | 14 | methods (TestMethodSetup) 15 | 16 | function getWebSettings(testCase) 17 | s = settings; 18 | testCase.WebSettings = s.matlab.web; 19 | end 20 | 21 | end 22 | 23 | methods (Test) 24 | 25 | function testHostIsSet(testCase) 26 | expectedHost = getenv('MW_PROXY_HOST'); 27 | testCase.assertNotEmpty(expectedHost); 28 | actualHost = testCase.WebSettings.ProxyHost.ActiveValue; 29 | testCase.verifyEqual(expectedHost, actualHost) 30 | end 31 | 32 | function testPortIsSet(testCase) 33 | expectedPort = getenv('MW_PROXY_PORT'); 34 | testCase.assertNotEmpty(expectedPort); 35 | actualPort = testCase.WebSettings.ProxyPort.ActiveValue; 36 | testCase.verifyEqual(expectedPort, actualPort); 37 | end 38 | 39 | function testProxyUsernameIsSet(testCase) 40 | expectedUserName = getenv('MW_PROXY_USERNAME'); 41 | testCase.assertNotEmpty(expectedUserName); 42 | actualUserName = testCase.WebSettings.ProxyUsername.ActiveValue; 43 | testCase.verifyEqual(expectedUserName, actualUserName); 44 | end 45 | 46 | function testProxyPasswordIsSet(testCase) 47 | expectedPassword = getenv('MW_PROXY_PASSWORD'); 48 | testCase.assertNotEmpty(expectedPassword); 49 | actualPassword = testCase.WebSettings.ProxyPassword.ActiveValue; 50 | testCase.verifyEqual(expectedPassword, actualPassword); 51 | end 52 | 53 | end 54 | 55 | end 56 | -------------------------------------------------------------------------------- /tests/matlab/shared/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/container-images/8aaadcfba6c9ec437294203022825ec2e8e7817e/tests/matlab/shared/__init__.py -------------------------------------------------------------------------------- /tests/matlab/shared/run_startup.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | 3 | """Test runner for the Startup.m test file""" 4 | 5 | import re 6 | import unittest 7 | from pathlib import Path 8 | 9 | import docker 10 | from pytools import dockertool, helper 11 | 12 | 13 | class Run_Startup_Test(unittest.TestCase): 14 | """A test runner class for the Startup.m test file""" 15 | 16 | @classmethod 17 | def setUpClass(cls) -> None: 18 | cls.client = docker.from_env() 19 | cls.image_name = helper.get_image_name() 20 | cls.client.images.get(cls.image_name) 21 | 22 | @classmethod 23 | def tearDownClass(cls) -> None: 24 | cls.client.close() 25 | 26 | def test_startup(self): 27 | m_filename = "Startup.m" 28 | m_filepath = str(Path(__file__).parent.resolve() / m_filename) 29 | 30 | runner = dockertool.MATLABTestRunner(self.client, m_filepath) 31 | runner.set_env( 32 | { 33 | "MW_PROXY_PORT": 3128, 34 | "MW_PROXY_HOST": "proxy", 35 | "MW_PROXY_USERNAME": "testUserName", 36 | "MW_PROXY_PASSWORD": "testPassword", 37 | } 38 | ) 39 | exit_code, logs = runner.run() 40 | self.assertNotRegex( 41 | logs, re.compile("At least one test failed", re.IGNORECASE), logs 42 | ) 43 | self.assertEqual( 44 | exit_code, 0, "The Docker container exited with a non-zero status code" 45 | ) 46 | 47 | 48 | if __name__ == "__main__": 49 | unittest.main() 50 | -------------------------------------------------------------------------------- /tests/matlab/shared/test_ddux.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2024 The MathWorks, Inc. 2 | 3 | """Run the tests to check for DDUX information set in the image""" 4 | 5 | import unittest 6 | 7 | import docker 8 | import testinfra 9 | from pytools import helper 10 | 11 | 12 | class TestDDUX(unittest.TestCase): 13 | """Test the DDUX information set when running the container 14 | 15 | When running the container the `MW_CONTEXT_TAGS` and `MHLM_CONTEXT` 16 | environment variables should be set to identify the images deployed by 17 | MathWorks on Docker Hub. 18 | 19 | This test class is designed to be inherited from rather than used directly. 20 | """ 21 | 22 | @classmethod 23 | def setUpClass(cls): 24 | """Run the container""" 25 | cls.client = docker.from_env() 26 | 27 | image_name = helper.get_image_name() 28 | cls.client.images.get(image_name) 29 | 30 | cls.container = cls.client.containers.run( 31 | image=image_name, 32 | detach=True, 33 | stdin_open=True, 34 | command="-shell", 35 | ) 36 | cls.host = testinfra.get_host("docker://" + cls.container.id) 37 | 38 | @classmethod 39 | def tearDownClass(cls): 40 | """Remove the container and close client connection""" 41 | cls.container.stop() 42 | cls.container.remove() 43 | cls.client.close() 44 | 45 | ############################################################ 46 | 47 | def test_ddux(self): 48 | """Test that the MW_CONTEXT_TAGS and MHLM_CONTEXT variables for DDUX are 49 | correctly set""" 50 | for tag, value in self.get_tag_value_pairs().items(): 51 | with self.subTest(tag=tag): 52 | mw_context_tags = self.host.environment().get(tag, "unset_variable") 53 | self.assertEqual(value, mw_context_tags) 54 | 55 | ############################################################ 56 | 57 | def get_tag_value_pairs(self): 58 | """Override this method in subclasses to provide different tag-value pairs""" 59 | raise NotImplementedError 60 | -------------------------------------------------------------------------------- /tests/matlab/shtools/create_file_with_content.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright 2024 The MathWorks, Inc. 3 | 4 | # create_file_with_content writes the content of the second argument 5 | # to the file pointed by the first argument 6 | create_file_with_content() { 7 | mkdir -p "$(dirname "$1")" 8 | echo "$2" >"$1" 9 | } 10 | -------------------------------------------------------------------------------- /tests/matlab/shtools/create_mock.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright 2024 The MathWorks, Inc. 3 | 4 | default_mock_path="/tmp/mocks" 5 | default_mock_symlink_path="/usr/local/sbin" 6 | 7 | create_mock() { 8 | mock=$1 9 | mocksdir=${2:-"${default_mock_path}"} 10 | mock_output="$( 11 | cat < None: 12 | self.runner = unittest.TextTestRunner() 13 | self.loader = unittest.TestLoader() 14 | self.suite = self.create_test_suite(*args) 15 | 16 | def create_test_suite(self, *args): 17 | """Create test suite and add tests to suite""" 18 | suite = unittest.TestSuite() 19 | for arg in args: 20 | suite.addTest(self.loader.loadTestsFromTestCase(arg)) 21 | return suite 22 | 23 | def run(self): 24 | """Run tests and exit""" 25 | return self.runner.run(self.suite) 26 | -------------------------------------------------------------------------------- /tests/requirements.txt: -------------------------------------------------------------------------------- 1 | # Copyright 2022-2024 The MathWorks, Inc. 2 | pytest-testinfra 3 | docker 4 | pexpect 5 | urllib3 6 | -------------------------------------------------------------------------------- /tests/tools/gen_license_file.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2024 The MathWorks, Inc. 4 | 5 | # write the license file 6 | mkdir -p "$(dirname "${LICENSE_FILE_PATH}")" 7 | echo "${MATLAB_LICENSE_FILE}" >>"${LICENSE_FILE_PATH}" 8 | -------------------------------------------------------------------------------- /ubi-hardening-extras/README.md: -------------------------------------------------------------------------------- 1 | # Red Hat Universal Base Images Packages for Hardening 2 | 3 | This repository is for MathWorks® internal use and not intended for end users. 4 | 5 | ---- 6 | 7 | Copyright 2023 The MathWorks, Inc. 8 | 9 | ---- 10 | -------------------------------------------------------------------------------- /ubi-hardening-extras/almalinux-base/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2025 The MathWorks, Inc. 2 | ARG BASE_IMAGE=almalinux 3 | ARG BASE_TAG=9.5 4 | 5 | FROM ${BASE_IMAGE}:${BASE_TAG} 6 | 7 | LABEL maintainer="The MathWorks, Inc." 8 | 9 | ARG LOCATION_ROOT=/tmp 10 | 11 | COPY base-dependencies.txt ${LOCATION_ROOT} 12 | ARG DNF="dnf --disableplugin subscription-manager --assumeyes" 13 | RUN ${DNF} update && \ 14 | ${DNF} install $(cat ${LOCATION_ROOT}/base-dependencies.txt) 15 | 16 | RUN ${DNF} install dnf-plugins-core epel-release 17 | -------------------------------------------------------------------------------- /ubi-hardening-extras/almalinux-base/base-dependencies.txt: -------------------------------------------------------------------------------- 1 | libX11 2 | libXext 3 | libXrender 4 | libXt 5 | libX11-xcb 6 | libXcomposite 7 | libXcursor 8 | libXdamage 9 | libXfixes 10 | libXft 11 | libXi 12 | libXinerama 13 | libXrandr 14 | libXtst 15 | libXxf86vm 16 | cairo 17 | pango 18 | nss 19 | cups-libs 20 | gdk-pixbuf2 21 | atk 22 | libffi 23 | alsa-lib 24 | net-tools 25 | at-spi2-atk 26 | mesa-libgbm 27 | at-spi2-core 28 | wget 29 | python3 30 | initscripts 31 | java-1.8.0-openjdk 32 | -------------------------------------------------------------------------------- /ubi-hardening-extras/icewm/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2025 The MathWorks, Inc. 2 | ARG BASE_IMAGE 3 | 4 | ARG LOCATION_ROOT=/tmp/deps 5 | 6 | FROM ${BASE_IMAGE} AS rpm-install 7 | ARG LOCATION_ROOT 8 | 9 | # Package iceWM dependencies 10 | ARG LOCATION=${LOCATION_ROOT}/icewm 11 | WORKDIR ${LOCATION} 12 | ENV DNF="dnf --disableplugin subscription-manager --assumeyes" 13 | RUN ${DNF} download icewm --resolve && \ 14 | ${DNF} localinstall *.rpm && \ 15 | tar --sort=name --owner=root:0 --group=root:0 --mtime='UTC 1984-12-07' -cf - *.rpm | gzip --no-name > ${LOCATION}.rpm.tar.gz && \ 16 | sha256sum ${LOCATION}.rpm.tar.gz > ${LOCATION}.sha256 17 | ARG VERSION=v1.x 18 | RUN echo "${VERSION}" > ${LOCATION}.version 19 | 20 | FROM scratch AS export-stage 21 | ARG LOCATION_ROOT 22 | 23 | LABEL maintainer="The MathWorks, Inc." 24 | 25 | COPY --from=rpm-install ${LOCATION_ROOT}/*.gz / 26 | COPY --from=rpm-install ${LOCATION_ROOT}/*.sha256 / 27 | COPY --from=rpm-install ${LOCATION_ROOT}/*.version / 28 | -------------------------------------------------------------------------------- /ubi-hardening-extras/matlab/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2024-2025 The MathWorks, Inc. 2 | ARG BASE_IMAGE 3 | 4 | ARG MPM_DOWNLOAD_DESTINATION="/usr/local/src" 5 | 6 | ARG MATLAB_RELEASE=R2025a 7 | 8 | ARG LOCATION_ROOT=/tmp/deps 9 | 10 | FROM ${BASE_IMAGE} AS matlab-download 11 | 12 | ARG LOCATION_ROOT 13 | ARG MATLAB_RELEASE 14 | ARG MPM_DOWNLOAD_DESTINATION 15 | 16 | ARG DNF="dnf --disableplugin subscription-manager --assumeyes" 17 | RUN ${DNF} update && \ 18 | ${DNF} install ca-certificates wget 19 | 20 | RUN wget -q https://www.mathworks.com/mpm/glnxa64/mpm && \ 21 | chmod +x mpm && \ 22 | ./mpm download \ 23 | --release=${MATLAB_RELEASE} \ 24 | --destination=${MPM_DOWNLOAD_DESTINATION} \ 25 | --products MATLAB \ 26 | && chmod +x ${MPM_DOWNLOAD_DESTINATION}/mpm/glnxa64/mpm \ 27 | || (echo "MPM Download Failure. See below for more information:" && cat /tmp/mathworks_root.log && false) 28 | 29 | ARG VERSION=v1.x 30 | 31 | RUN mkdir -p ${LOCATION_ROOT} && \ 32 | sha256sum ${MPM_DOWNLOAD_DESTINATION}/ProductFilesInfo.xml > ${LOCATION_ROOT}/matlab.sha256 && \ 33 | echo "${VERSION}" > ${LOCATION_ROOT}/matlab.version 34 | 35 | # Move MPM and the installation files to a scratch image 36 | FROM scratch 37 | 38 | LABEL maintainer="The MathWorks, Inc." 39 | 40 | # Declare build arguments to use at the current build stage. 41 | ARG MPM_DOWNLOAD_DESTINATION 42 | ARG LOCATION_ROOT 43 | 44 | COPY --from=matlab-download ${MPM_DOWNLOAD_DESTINATION} / 45 | COPY --from=matlab-download ${LOCATION_ROOT}/*.sha256 / 46 | COPY --from=matlab-download ${LOCATION_ROOT}/*.version / 47 | -------------------------------------------------------------------------------- /ubi-hardening-extras/novnc/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2025 The MathWorks, Inc. 2 | ARG BASE_IMAGE 3 | 4 | ARG LOCATION_ROOT=/tmp/deps 5 | 6 | FROM ${BASE_IMAGE} AS rpm-install 7 | ARG LOCATION_ROOT 8 | 9 | # Package noVNC dependencies 10 | ARG LOCATION=${LOCATION_ROOT}/novnc 11 | WORKDIR ${LOCATION} 12 | RUN echo "Install noVNC - HTML5 based VNC viewer" && \ 13 | mkdir -p ${LOCATION}/utils/websockify && \ 14 | wget -qO- https://github.com/novnc/noVNC/archive/v1.2.0.tar.gz | tar xz --strip 1 -C ${LOCATION} && \ 15 | wget -qO- https://github.com/novnc/websockify/archive/v0.10.0.tar.gz | tar xz --strip 1 -C ${LOCATION}/utils/websockify && \ 16 | chmod +x -v ${LOCATION}/utils/*.sh && \ 17 | ## create index.html to forward automatically to `vnc.html` 18 | ln -s $LOCATION/vnc.html $LOCATION/index.html && \ 19 | tar --sort=name --owner=root:0 --group=root:0 --mtime='UTC 1984-12-07' -cf - . | gzip --no-name > ${LOCATION}.tar.gz && \ 20 | sha256sum ${LOCATION}.tar.gz > ${LOCATION}.sha256 21 | ARG VERSION=v1.x 22 | RUN echo "${VERSION}" > ${LOCATION}.version 23 | 24 | FROM scratch AS export-stage 25 | ARG LOCATION_ROOT 26 | 27 | LABEL maintainer="The MathWorks, Inc." 28 | 29 | COPY --from=rpm-install ${LOCATION_ROOT}/*.gz / 30 | COPY --from=rpm-install ${LOCATION_ROOT}/*.sha256 / 31 | COPY --from=rpm-install ${LOCATION_ROOT}/*.version / 32 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/icewm/icewm_test.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | 3 | """ 4 | Module for testing the "icewm" image 5 | """ 6 | 7 | from utils import basetest 8 | import unittest 9 | 10 | 11 | class IcewmTest(basetest.TestCase): 12 | """ 13 | Test class to build a Docker image from the "icewm" one and test the resulting image 14 | """ 15 | 16 | def test_packages_present(self): 17 | """Test that the icewm-* packages are installed""" 18 | packages = ["icewm", "icewm-data", "icewm-themes"] 19 | for name in packages: 20 | with self.subTest(packagename=name): 21 | self.assertTrue(self.host.package(name).is_installed) 22 | 23 | 24 | ################################################################################## 25 | 26 | if __name__ == "__main__": 27 | unittest.main() 28 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/matlab/matlab_test.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 The MathWorks, Inc. 2 | 3 | """ 4 | Module for testing the "matlab" image 5 | """ 6 | 7 | from utils import basetest 8 | import unittest 9 | 10 | 11 | class MATLABTest(basetest.TestCase): 12 | """ 13 | Test class to build a Docker image from the "matlab" one and test the resulting image 14 | """ 15 | dockerfile = "Dockerfile.matlab" 16 | 17 | def test_matlab_present(self): 18 | """Test that MATLAB is installed and available""" 19 | self.assertTrue(self.host.exists(command="matlab")) 20 | 21 | 22 | ################################################################################## 23 | 24 | if __name__ == "__main__": 25 | unittest.main() 26 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/novnc/novnc_test.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | 3 | """ 4 | Module for testing the "novnc" image 5 | """ 6 | 7 | from utils import basetest 8 | import unittest 9 | 10 | 11 | class NoVncTest(basetest.TestCase): 12 | """ 13 | Test class to build a Docker image from the "novnc" one and test the resulting image 14 | """ 15 | dockerfile = "Dockerfile.novnc" 16 | 17 | def test_can_launch(self): 18 | """Test that the launch.sh executable exists""" 19 | self.assertTrue(self.host.file("/tmp/novnc/utils/launch.sh").exists) 20 | 21 | 22 | ################################################################################## 23 | 24 | if __name__ == "__main__": 25 | unittest.main() 26 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/requirements.txt: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | 3 | docker 4 | pytest-testinfra 5 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/tigervnc/tigervnc_test.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | 3 | """ 4 | Module for testing the "tigervnc" image 5 | """ 6 | 7 | from utils import basetest 8 | import unittest 9 | 10 | 11 | class TigerVncTest(basetest.TestCase): 12 | """ 13 | Test class to build a Docker image from the "tigervnc" one and test the resulting image 14 | """ 15 | 16 | def test_packages_present(self): 17 | """Test that the tigervnc_* packages are installed""" 18 | packages = [ 19 | "tigervnc-server-minimal", 20 | "tigervnc-license", 21 | ] 22 | for name in packages: 23 | with self.subTest(packagename=name): 24 | self.assertTrue(self.host.package(name).is_installed) 25 | 26 | 27 | ################################################################################## 28 | 29 | if __name__ == "__main__": 30 | unittest.main() 31 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/utils/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | 3 | ARG BASE_REGISTRY=redhat 4 | ARG BASE_IMAGE=ubi9 5 | ARG BASE_TAG=9.4 6 | ARG IMAGE_UNDER_TEST 7 | 8 | FROM ${IMAGE_UNDER_TEST} AS image-under-test 9 | 10 | # install the RPM packages contained in the $TAR_IMAGE into a redhat-ubi image 11 | 12 | FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} 13 | 14 | ARG RPM_INSTALL=/tmp 15 | 16 | COPY --from=image-under-test *.rpm.tar.gz ${RPM_INSTALL} 17 | 18 | RUN cd ${RPM_INSTALL} && \ 19 | ls *.rpm.tar.gz | xargs -n 1 tar -xvzf && \ 20 | dnf install -y --nodocs *.rpm --nogpgcheck && \ 21 | dnf -y clean all && \ 22 | rm -rf /var/cache/dnf && \ 23 | rm -rf ${RPM_INSTALL} 24 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/utils/Dockerfile.matlab: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | 3 | ARG BASE_REGISTRY=redhat 4 | ARG BASE_IMAGE=ubi9 5 | ARG BASE_TAG=9.4 6 | ARG IMAGE_UNDER_TEST=matlab 7 | 8 | FROM ${IMAGE_UNDER_TEST} AS image-under-test 9 | 10 | FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} 11 | 12 | ARG MATLAB_INSTALL_LOCATION=/opt/matlab 13 | 14 | COPY --from=image-under-test / /matlab-archive 15 | 16 | RUN /matlab-archive/mpm/glnxa64/mpm install \ 17 | --source=/matlab-archive/archives \ 18 | --destination=${MATLAB_INSTALL_LOCATION} \ 19 | --products MATLAB \ 20 | || (echo "MPM Installation Failure. See below for more information:" && cat /tmp/mathworks_root.log && false) \ 21 | && rm -rf /tmp/mathworks_root.log \ 22 | && ln -s ${MATLAB_INSTALL_LOCATION}/bin/matlab /usr/local/bin/matlab 23 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/utils/Dockerfile.novnc: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2024 The MathWorks, Inc. 2 | 3 | ARG BASE_REGISTRY=redhat 4 | ARG BASE_IMAGE=ubi9 5 | ARG BASE_TAG=9.4 6 | ARG IMAGE_UNDER_TEST=novnc 7 | 8 | FROM ${IMAGE_UNDER_TEST} AS image-under-test 9 | 10 | FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} 11 | 12 | COPY --from=image-under-test *.tar.gz /tmp 13 | 14 | RUN mkdir /tmp/novnc/ && \ 15 | tar -xzf /tmp/novnc.tar.gz --directory /tmp/novnc/ --no-same-owner --no-same-permissions 16 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/utils/basetest.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | 3 | import testinfra 4 | import docker 5 | import unittest 6 | import pathlib 7 | import os 8 | 9 | 10 | class TestCase(unittest.TestCase): 11 | """Base test class""" 12 | 13 | # default parameters (can be overridden in derived test classes) 14 | buildargs = {"IMAGE_UNDER_TEST": os.getenv("IMAGE_UNDER_TEST")} 15 | dockerfile = "Dockerfile" 16 | 17 | @classmethod 18 | def setUpClass(cls): 19 | """ 20 | Build a Docker image from the Dockerfile contained in this directory. 21 | To choose which image use as a base image, set the buildargs "IMAGE_UNDER_TEST" 22 | """ 23 | cls.client = docker.from_env() 24 | cls.image, _ = cls.client.images.build( 25 | path=str(pathlib.Path(__file__).parent.resolve()), 26 | buildargs=cls.buildargs, 27 | dockerfile=cls.dockerfile, 28 | rm=True, 29 | ) 30 | 31 | def setUp(self): 32 | """Run the docker container. Equivalent to 33 | 34 | 'docker run --rm -i -d DOCKER_IMAGE ' 35 | """ 36 | self.container = self.client.containers.run( 37 | image=self.image.id, detach=True, stdin_open=True 38 | ) 39 | self.host = testinfra.get_host("docker://" + self.container.id) 40 | 41 | def tearDown(self): 42 | """Stop and remove the container.""" 43 | self.container.stop() 44 | self.container.remove() 45 | 46 | @classmethod 47 | def tearDownClass(cls): 48 | """Remove the image and the client.""" 49 | cls.client.images.remove(cls.image.id, force=True) 50 | cls.client.close() 51 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tests/xterm/xterm_test.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 The MathWorks, Inc. 2 | 3 | """ 4 | Module for testing the "xterm" image 5 | """ 6 | 7 | from utils import basetest 8 | import unittest 9 | 10 | 11 | class XtermVncTest(basetest.TestCase): 12 | """ 13 | Test class to build a Docker image from the "xterm" one and test the resulting image 14 | """ 15 | 16 | def test_packages_present(self): 17 | """Test that the xterm-* packages are installed""" 18 | packages = [ 19 | "xterm", 20 | "xterm-resize", 21 | ] 22 | for name in packages: 23 | with self.subTest(packagename=name): 24 | self.assertTrue(self.host.package(name).is_installed) 25 | 26 | 27 | ################################################################################## 28 | 29 | if __name__ == "__main__": 30 | unittest.main() 31 | -------------------------------------------------------------------------------- /ubi-hardening-extras/tigervnc/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2025 The MathWorks, Inc. 2 | ARG BASE_IMAGE 3 | 4 | ARG LOCATION_ROOT=/tmp/deps 5 | 6 | FROM ${BASE_IMAGE} AS rpm-install 7 | ARG LOCATION_ROOT 8 | 9 | # Package tiger-vnc dependencies 10 | ARG LOCATION=${LOCATION_ROOT}/tiger-vnc 11 | WORKDIR ${LOCATION} 12 | ENV DNF="dnf --disableplugin subscription-manager --assumeyes" 13 | RUN ${DNF} download tigervnc-server-minimal --resolve && \ 14 | ${DNF} localinstall *.rpm && \ 15 | tar --sort=name --owner=root:0 --group=root:0 --mtime='UTC 1984-12-07' -cf - *.rpm | gzip --no-name > ${LOCATION}.rpm.tar.gz && \ 16 | sha256sum ${LOCATION}.rpm.tar.gz > ${LOCATION}.sha256 17 | ARG VERSION=v1.x 18 | RUN echo "${VERSION}" > ${LOCATION}.version 19 | 20 | FROM scratch AS export-stage 21 | ARG LOCATION_ROOT 22 | 23 | LABEL maintainer="The MathWorks, Inc." 24 | 25 | COPY --from=rpm-install ${LOCATION_ROOT}/*.gz / 26 | COPY --from=rpm-install ${LOCATION_ROOT}/*.sha256 / 27 | COPY --from=rpm-install ${LOCATION_ROOT}/*.version / 28 | -------------------------------------------------------------------------------- /ubi-hardening-extras/workflow/extract_metadata.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2023 The MathWorks Inc. 4 | 5 | # This script extracts the .sha256 and .version files from a Docker image. 6 | # The files are saved to /tmp/latest. 7 | 8 | # Get script location and Docker image to extract from 9 | SCRIPTPATH=$(dirname $0) 10 | BASE_IMAGE=$1 11 | 12 | # Extract signature and version files from Docker image 13 | docker build \ 14 | --build-arg BASE_IMAGE=${BASE_IMAGE} \ 15 | --file ${SCRIPTPATH}/extraction.Dockerfile \ 16 | --output /tmp/latest/ \ 17 | ${SCRIPTPATH} 18 | 19 | # Output version 20 | VERSION=$(cat /tmp/latest/*.version) 21 | echo "${VERSION}" 22 | -------------------------------------------------------------------------------- /ubi-hardening-extras/workflow/extraction.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2025 The MathWorks, Inc. 2 | ARG BASE_IMAGE 3 | 4 | FROM ${BASE_IMAGE} AS base 5 | 6 | FROM scratch AS extract-stage 7 | 8 | LABEL maintainer="The MathWorks, Inc." 9 | 10 | COPY --from=base /*.sha256 / 11 | COPY --from=base /*.version / 12 | -------------------------------------------------------------------------------- /ubi-hardening-extras/workflow/increment_version.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2023 The MathWorks Inc. 4 | 5 | # This script increments the minor version in a version number vMAJOR.MINOR 6 | 7 | # Retrieve the input 8 | VERSION=$1 9 | 10 | # Test if the input matches the expected format 11 | if [[ "${VERSION}" =~ ^v([0-9]+).(-?[0-9]+)$ ]]; then 12 | # Extract major and minor levels 13 | MAJOR="${BASH_REMATCH[1]}" 14 | MINOR="${BASH_REMATCH[2]}" 15 | 16 | # Increment minor level 17 | echo "v${MAJOR}.$((++MINOR))" 18 | 19 | else 20 | echo ">> ${VERSION} is not a valid version (expecting vX.X)." 21 | exit 1 22 | fi 23 | -------------------------------------------------------------------------------- /ubi-hardening-extras/xterm/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023-2025 The MathWorks, Inc. 2 | ARG BASE_IMAGE 3 | 4 | ARG LOCATION_ROOT=/tmp/deps 5 | 6 | FROM ${BASE_IMAGE} AS rpm-install 7 | ARG LOCATION_ROOT 8 | 9 | # Package xterm dependencies 10 | ARG LOCATION=${LOCATION_ROOT}/xterm 11 | WORKDIR ${LOCATION} 12 | ENV DNF="dnf --disableplugin subscription-manager --assumeyes" 13 | RUN ${DNF} download xterm --resolve && \ 14 | ${DNF} localinstall *.rpm && \ 15 | tar --sort=name --owner=root:0 --group=root:0 --mtime='UTC 1984-12-07' -cf - *.rpm | gzip --no-name > ${LOCATION}.rpm.tar.gz && \ 16 | sha256sum ${LOCATION}.rpm.tar.gz > ${LOCATION}.sha256 17 | ARG VERSION=v1.x 18 | RUN echo "${VERSION}" > ${LOCATION}.version 19 | 20 | FROM scratch AS export-stage 21 | ARG LOCATION_ROOT 22 | 23 | LABEL maintainer="The MathWorks, Inc." 24 | 25 | COPY --from=rpm-install ${LOCATION_ROOT}/*.gz / 26 | COPY --from=rpm-install ${LOCATION_ROOT}/*.sha256 / 27 | COPY --from=rpm-install ${LOCATION_ROOT}/*.version / 28 | --------------------------------------------------------------------------------