Skip to content

Commit d48543a

Browse files
rashedmytprabhakk-mw
authored andcommitted
Support for MATLAB R2026a
1 parent 6a9f77b commit d48543a

7 files changed

Lines changed: 53 additions & 44 deletions

File tree

.devcontainer/devcontainer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"name": "MATLAB R2025b",
3-
"image": "ghcr.io/prabhakk-mw/matlab-integration-for-jupyter/jupyter-matlab-notebook:r2025b",
2+
"name": "MATLAB R2026a",
3+
"image": "ghcr.io/mathworks-ref-arch/matlab-integration-for-jupyter/jupyter-matlab-notebook:r2026a",
44
// Configure VSCode Extensions
55
"customizations": {
66
"vscode": {

.devcontainer/using-dockerfile/devcontainer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"build": {
1414
"dockerfile": "../../Dockerfile",
1515
"args": {
16-
"MATLAB_RELEASE": "r2025b",
16+
"MATLAB_RELEASE": "r2026a",
1717
"MATLAB_PRODUCT_LIST": "MATLAB Symbolic_Math_Toolbox Simulink",
1818
"MATLAB_INSTALL_STAGE_SELECTOR": "using-mpm"
1919
}

.github/workflows/build-and-publish-docker-image.yml

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2023 The MathWorks, Inc.
1+
# Copyright 2023-2026 The MathWorks, Inc.
22

33
name: Build and Publish the Container Image
44

@@ -24,7 +24,7 @@ on:
2424
required: true
2525
type: string
2626
os_info_tag:
27-
description: 'Allowed values: ubuntu20.04 ubuntu22.04'
27+
description: 'Allowed values: ubuntu20.04 ubuntu22.04 ubuntu24.04'
2828
required: true
2929
type: string
3030
is_default_os:
@@ -39,9 +39,12 @@ on:
3939
jobs:
4040
build-push-image:
4141
runs-on: ubuntu-latest
42+
permissions:
43+
contents: read
44+
packages: write
4245
steps:
4346
- name: Checkout repo
44-
uses: actions/checkout@v3
47+
uses: actions/checkout@v6
4548

4649
- name : Setup Image Tags
4750
id: setup_image_tags
@@ -56,25 +59,25 @@ jobs:
5659
# List is defined as a New Line Separated set of values. See: https://github.com/docker/build-push-action?tab=readme-ov-file#inputs
5760
- name: Create New Line separated from Comma Separated
5861
id: convert-build-args-csv-to-list
59-
uses: actions/github-script@v7
62+
uses: actions/github-script@v9
6063
with:
6164
script: |
6265
core.setOutput('build-args-as-list', `${{ inputs.build_args_csv }}`.split(",").join("\n"))
6366
6467
- name: Login to GitHub Container Registry
65-
uses: docker/login-action@v2
68+
uses: docker/login-action@v4
6669
with:
6770
registry: ghcr.io
6871
username: ${{ github.repository_owner }}
6972
password: ${{ secrets.GITHUB_TOKEN }}
7073

7174
- name: Set up Docker Buildx
72-
uses: docker/setup-buildx-action@v2
75+
uses: docker/setup-buildx-action@v4
7376

7477
# Example tags: r2023a-ubuntu20.04, R2023a-ubuntu20.04
7578
- name: Build & Push Image
7679
if: ${{ inputs.is_default_os == false }}
77-
uses: docker/build-push-action@v4
80+
uses: docker/build-push-action@v7
7881
with:
7982
build-args: |
8083
${{ steps.convert-build-args-csv-to-list.outputs.build-args-as-list }}
@@ -88,7 +91,7 @@ jobs:
8891
# Example tags: r2023a-ubuntu20.04, R2023a-ubuntu20.04, r2023a, R2023a
8992
- name: Build & Push Image for latest OS
9093
if: ${{ inputs.is_default_os == true }}
91-
uses: docker/build-push-action@v4
94+
uses: docker/build-push-action@v7
9295
with:
9396
build-args: |
9497
${{ steps.convert-build-args-csv-to-list.outputs.build-args-as-list }}

.github/workflows/jupyter-matlab-notebook.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2024-2025 The MathWorks, Inc.
1+
# Copyright 2024-2026 The MathWorks, Inc.
22
# Build & Publish jupyter-matlab-notebook
33
name: jupyter-matlab-notebook
44

@@ -20,10 +20,13 @@ on:
2020

2121
jobs:
2222
build-and-publish-docker-image:
23+
permissions:
24+
contents: read
25+
packages: write
2326
strategy:
2427
fail-fast: false
2528
matrix:
26-
matlab_release_tag: [R2025b, R2025a, R2024b, R2024a, R2023b, R2023a, R2022b]
29+
matlab_release_tag: [R2026a, R2025b, R2025a, R2024b, R2024a, R2023b, R2023a, R2022b]
2730
uses: ./.github/workflows/build-and-publish-docker-image.yml
2831
secrets: inherit
2932
with:

.github/workflows/jupyter-mounted-matlab-notebook.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2024-2025 The MathWorks, Inc.
1+
# Copyright 2024-2026 The MathWorks, Inc.
22
# Build & Publish jupyter-mounted-matlab-notebook
33
name: jupyter-mounted-matlab-notebook
44

@@ -20,10 +20,13 @@ on:
2020

2121
jobs:
2222
build-and-publish-docker-image:
23+
permissions:
24+
contents: read
25+
packages: write
2326
strategy:
2427
fail-fast: false
2528
matrix:
26-
matlab_release_tag: [R2025b, R2025a, R2024b, R2024a, R2023b, R2023a, R2022b]
29+
matlab_release_tag: [R2026a, R2025b, R2025a, R2024b, R2024a, R2023b, R2023a, R2022b]
2730
uses: ./.github/workflows/build-and-publish-docker-image.yml
2831
secrets: inherit
2932
with:

Dockerfile

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Copyright 2024-2025 The MathWorks, Inc.
1+
# Copyright 2024-2026 The MathWorks, Inc.
22
# Dockerfile for the MATLAB Integration for Jupyter based on quay.io/jupyter/base-notebook
3-
# With Python Version : 3.12
3+
# With Python Version : 3.13
44
###############################################################################
55
# This Dockerfile is divided into multiple stages, the behavior of each stage
66
# is based on the build time args.
@@ -17,7 +17,7 @@
1717
# Example docker build commands are available at the end of this file.
1818

1919
## Setup Build Arguments, to chain multi-stage build selection.
20-
ARG MATLAB_RELEASE=R2025b
20+
ARG MATLAB_RELEASE=R2026a
2121

2222
# See https://mathworks.com/help/install/ug/mpminstall.html for product list specfication
2323
ARG MATLAB_PRODUCT_LIST="MATLAB"
@@ -187,6 +187,7 @@ RUN python -m pip install -U jupyter-matlab-proxy
187187

188188
FROM base3-with-jmp AS base3-with-jmp-with-vnc
189189
RUN echo "Installing jupyter-remote-desktop-proxy ..."
190+
RUN python -m pip install -U jupyter-remote-desktop-proxy
190191
USER root
191192

192193
RUN export DEBIAN_FRONTEND=noninteractive && apt-get update \
@@ -203,14 +204,13 @@ RUN export DEBIAN_FRONTEND=noninteractive && apt-get update \
203204
# Disable the automatic screenlock since the account password is unknown
204205
&& apt-get -y -qq remove xfce4-screensaver
205206

206-
# Pip install the latest version of the integration
207207
USER $NB_USER
208208

209209
COPY --chown=$NB_UID:$NB_GID ./resources /home/${NB_USER}/matlab-resources
210-
# Move MATLAB resource files to the expected locations
211-
RUN python -m pip install -U jupyter-remote-desktop-proxy \
212-
&& export RESOURCES_LOC=/home/${NB_USER}/matlab-resources \
213-
&& mkdir -p ${HOME}/.local/share/applications ${HOME}/Desktop ${HOME}/.local/share/ ${HOME}/.icons \
210+
# Move MATLAB resource files to the expected locations. Also create Documents folder
211+
# as MATLAB will warn if it does not exist.
212+
RUN export RESOURCES_LOC=/home/${NB_USER}/matlab-resources \
213+
&& mkdir -p ${HOME}/.local/share/applications ${HOME}/Desktop ${HOME}/Documents ${HOME}/.local/share/ ${HOME}/.icons \
214214
&& cp ${RESOURCES_LOC}/MATLAB.desktop ${HOME}/Desktop/ \
215215
&& cp ${RESOURCES_LOC}/MATLAB.desktop ${HOME}/.local/share/applications\
216216
&& ln -s ${RESOURCES_LOC}/matlab_icon.png ${HOME}/.icons/matlab_icon.png

README.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ To run MATLAB® in Jupyter® inside a container, use the [Dockerfile](./Do
88

99
## Run in GitHub Codespaces
1010

11-
To run this container, click the button below to start a [GitHub Codespace](https://docs.github.com/en/codespaces/about-codespaces/what-are-codespaces) with a [pre-built image](#pre-built-images) for MATLAB R2025b.
11+
To run this container, click the button below to start a [GitHub Codespace](https://docs.github.com/en/codespaces/about-codespaces/what-are-codespaces) with a [pre-built image](#pre-built-images) for MATLAB R2026a.
1212

1313
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/mathworks-ref-arch/matlab-integration-for-jupyter?devcontainer_path=.devcontainer%2Fdevcontainer.json)
1414

@@ -36,12 +36,12 @@ cd matlab-integration-for-jupyter
3636
### Build & Run Docker Container
3737
Build the container with a name and tag of your choice.
3838
```bash
39-
docker build -t mifj:R2025a .
39+
docker build -t mifj:R2026a .
4040
```
4141

4242
Run the container.
4343
```bash
44-
docker run -it -p 8888:8888 --rm mifj:R2025a
44+
docker run -it -p 8888:8888 --rm mifj:R2026a
4545
```
4646

4747
To open JupyterLab, use your browser to visit the address printed in your console of the format `http://<hostname>:8888/?token=<token>`. The `hostname` is the name of the computer running Docker, and the `token` is the secret token printed in the console.
@@ -59,7 +59,7 @@ The [Dockerfile](https://github.com/mathworks-ref-arch/matlab-dockerfile/blob/ma
5959

6060
| Argument Name | Description | Default value |
6161
|---|---|---|
62-
| [MATLAB_RELEASE](#build-an-image-for-a-different-release-of-matlab) | The MATLAB release you want to install. | R2025a |
62+
| [MATLAB_RELEASE](#build-an-image-for-a-different-release-of-matlab) | The MATLAB release you want to install. | R2026a |
6363
| [MATLAB_PRODUCT_LIST](#build-an-image-with-a-specific-set-of-products) | Products to install as a space-separated list. For more information, see [MPM.md](https://github.com/mathworks-ref-arch/matlab-dockerfile/blob/main/MPM.md). For example: MATLAB Simulink Deep_Learning_Toolbox Fixed-Point_Designer. | MATLAB |
6464
| [MATLAB_INSTALL_LOCATION](#build-an-image-with-matlab-installed-to-a-specific-location) | The path to install MATLAB. | /opt/matlab |
6565
| [LICENSE_SERVER](#build-an-image-configured-to-use-a-license-server) | The port and hostname of the machine that is running the Network License Manager, using the port@hostname syntax. For example: *27000@MyServerName* | *Unset* |
@@ -78,24 +78,24 @@ docker build --build-arg MATLAB_RELEASE=R2019b -t mifj:R2019b .
7878
#### Build an Image with Specific Products
7979
To build an image with MATLAB and Simulink, run:
8080
```bash
81-
docker build --build-arg MATLAB_PRODUCT_LIST='MATLAB Simulink' -t mifj:R2025a .
81+
docker build --build-arg MATLAB_PRODUCT_LIST='MATLAB Simulink' -t mifj:R2026a .
8282
```
8383

8484
#### Build an Image with MATLAB Installed in a Specific Location
8585
To build an image with MATLAB installed at `/opt/matlab`, use this command.
8686
```bash
87-
docker build --build-arg MATLAB_INSTALL_LOCATION='/opt/matlab' -t mifj:R2025a .
87+
docker build --build-arg MATLAB_INSTALL_LOCATION='/opt/matlab' -t mifj:R2026a .
8888
```
8989

9090
#### Build an Image Configured to Use a License Server
9191

9292
If you include the license server information with the `docker build` command, you do not have to provide it when running the container.
9393
```bash
9494
# Build container with the License Server.
95-
docker build --build-arg LICENSE_SERVER=27000@MyServerName -t mifj:R2025a .
95+
docker build --build-arg LICENSE_SERVER=27000@MyServerName -t mifj:R2026a .
9696

9797
# Run the container, without providing license information.
98-
docker run -it --rm -p 8888:8888 mifj:R2025a
98+
docker run -it --rm -p 8888:8888 mifj:R2026a
9999
```
100100
Alternatively, to provide the License Server information with `docker run`, you can use the environment variable `MLM_LICENSE_FILE`:
101101
```bash
@@ -107,7 +107,7 @@ For more information on using the Network License Manager, see [Use the Network
107107
#### Build an Image with the MATLAB Engine for Python
108108
To build the default image along with the MATLAB Engine for Python for a given MATLAB Release, run:
109109
```bash
110-
docker build --build-arg INSTALL_MATLABENGINE=1 --build-arg MATLAB_RELEASE=R2025a -t mifj:R2025a .
110+
docker build --build-arg INSTALL_MATLABENGINE=1 --build-arg MATLAB_RELEASE=R2026a -t mifj:R2026a .
111111
```
112112
For more information, see:
113113
- [MATLAB Engine for Python](https://github.com/mathworks/matlab-engine-for-python) (GitHub).
@@ -120,7 +120,7 @@ For more information, see:
120120
#### Build an Image with the Option to Access Desktop Using VNC
121121
To build the default image along with the ability to access an XFCE Desktop using VNC, run:
122122
```bash
123-
docker build --build-arg INSTALL_VNC=1 -t mifj:R2025a .
123+
docker build --build-arg INSTALL_VNC=1 -t mifj:R2026a .
124124
```
125125
For more information, see [Jupyter Remote Desktop Proxy (GitHub)](https://github.com/jupyterhub/jupyter-remote-desktop-proxy).
126126

@@ -144,17 +144,17 @@ Use the [Dockerfile Build Arguments](https://docs.docker.com/reference/dockerfil
144144

145145
```bash
146146
docker build --build-arg MOUNT_MATLAB=1 \
147-
--build-arg MATLAB_RELEASE=R2025a \
147+
--build-arg MATLAB_RELEASE=R2026a \
148148
-t mifj:mounted .
149149
```
150150
The `MATLAB_RELEASE` argument ensures that the system dependencies required for MATLAB are installed in the container.
151151

152152
Note: When you are mounting MATLAB on the container at run time, you cannot install MATLAB Engine for Python at build time.
153153

154154
#### Specify Mount Location at Container Startup
155-
If MATLAB is installed in `/usr/local/MATLAB/R2025a` on your local machine, you can bind mount this folder to `/opt/matlab` using the command shown below:
155+
If MATLAB is installed in `/usr/local/MATLAB/R2026a` on your local machine, you can bind mount this folder to `/opt/matlab` using the command shown below:
156156
```bash
157-
docker run -it --rm -v /usr/local/MATLAB/R2025a:/opt/matlab:ro -p 8888:8888 mifj:mounted
157+
docker run -it --rm -v /usr/local/MATLAB/R2026a:/opt/matlab:ro -p 8888:8888 mifj:mounted
158158
```
159159
For more information, see [Bind Mounts (Docker)](https://docs.docker.com/engine/storage/bind-mounts/).
160160

@@ -166,9 +166,9 @@ This option is useful when you want to minimize the size of the container as ins
166166
To copy an existing MATLAB installation from another container image, specify the image name with the Docker Build Arguments `MATLAB_IMAGE_NAME` and `MATLAB_RELEASE` as shown below:
167167

168168
```bash
169-
# Copies MATLAB from the Dockerhub Image "mathworks/matlab:r2025a" into the image being built.
170-
docker build --build-arg MATLAB_IMAGE_NAME=mathworks/matlab:r2025a \
171-
--build-arg MATLAB_RELEASE=R2025a \
169+
# Copies MATLAB from the Dockerhub Image "mathworks/matlab:r2026a" into the image being built.
170+
docker build --build-arg MATLAB_IMAGE_NAME=mathworks/matlab:r2026a \
171+
--build-arg MATLAB_RELEASE=R2026a \
172172
-t mifj:copied .
173173
```
174174
The `MATLAB_RELEASE` argument, ensures that the system dependencies required for MATLAB, are installed into the container.
@@ -186,12 +186,12 @@ These images are based on `jupyter/base-notebook:ubuntu-24.04` and include:
186186
* Only available in pre-built images newer than R2023b
187187
* See [Different Versions of OS or Python](#different-versions-of-os-or-python) for more information on installing the engine for older versions of MATLAB.
188188

189-
**Available Tags**: `R2025b`, `R2025a`, `R2024b`, `R2024a`, `R2023b`, `R2023a`, `R2022b`
189+
**Available Tags**: `R2026a`, `R2025b`, `R2025a`, `R2024b`, `R2024a`, `R2023b`, `R2023a`, `R2022b`
190190

191191
**Docker Pull Command**:
192192
```bash
193193
# Substitute the tag with your desired version of MATLAB.
194-
docker pull ghcr.io/mathworks-ref-arch/matlab-integration-for-jupyter/jupyter-matlab-notebook:R2025a
194+
docker pull ghcr.io/mathworks-ref-arch/matlab-integration-for-jupyter/jupyter-matlab-notebook:R2026a
195195
```
196196
### jupyter-mounted-matlab-notebook
197197
These images are based on `jupyter/base-notebook:ubuntu-24.04` and include:
@@ -201,12 +201,12 @@ These images are based on `jupyter/base-notebook:ubuntu-24.04` and include:
201201
* Only available in pre-built images newer than R2023b
202202
* See [Compatibility for Different Versions of OS or Python](#compatibility-for-different-versions-of-os-or-python) for more information on installing the engine for older versions of MATLAB.
203203

204-
**Available Tags**: `R2025b`, `R2025a`, `R2024b`, `R2024a`, `R2023b`, `R2023a`, `R2022b`
204+
**Available Tags**: `R2026a`, `R2025b`, `R2025a`, `R2024b`, `R2024a`, `R2023b`, `R2023a`, `R2022b`
205205

206206
**Docker Pull Command**:
207207
```bash
208208
# Substitute the tag with your desired version of MATLAB.
209-
docker pull ghcr.io/mathworks-ref-arch/matlab-integration-for-jupyter/jupyter-mounted-matlab-notebook:R2025a
209+
docker pull ghcr.io/mathworks-ref-arch/matlab-integration-for-jupyter/jupyter-mounted-matlab-notebook:R2026a
210210
```
211211
Use the correct version of the image based on the MATLAB release you are mounting on the image.
212212
For example to mount `R2022b` from your local machine, that is installed in `/usr/local/MATLAB/R2022b`, use the following `docker run` command:
@@ -234,6 +234,6 @@ To submit an enhancement request or request technical support, create an [Issue]
234234

235235
----
236236

237-
Copyright 2020-2025 The MathWorks, Inc.
237+
Copyright 2020-2026 The MathWorks, Inc.
238238

239239
----

0 commit comments

Comments
 (0)