我是编写 dockerfile 和创建开发容器的完全初学者。我想创建一个 devcontainer,可供我团队中在 vscode 上使用 IAR 编译器/工具链的任何人共享和使用。
到目前为止我已经为我的 dockerfile 写了这个:
FROM ubuntu:24.04 as base
RUN apt-get update
#RUN apt-get install ca-certificates gpg wget
#Set up a directory
RUN mkdir ~/setup
WORKDIR ~/setup
#Add IAR Build Tools for Arm:
ADD [link to download] /setup/
RUN apt-get install /setup/bxarm-9.50.2.deb
ADD [link to download] /setup/
RUN apt-get install /setup/bxarm-9.50.2.deb.sha256
ADD [link to download] /setup/
RUN apt-get install /setup/bxarm-cspy-device-support-9.50.2.deb
#Install required packages for Build Tools
RUN sha256sum --check ./bxarm-9.50.2.sha256sum
RUN apt-get install /bxarm-*.deb
#Install CMake
RUN apt-get install cmake
#Install Ninja
RUN apt-get install -y ninja-build
RUN ninja --version`
我使用这个存储库作为我需要什么软件的指导,但它只是关于在 VS Code 上运行 IAR - 与 Dockerfile 无关。
这个 dockerfile 有意义吗?一旦我获得 IAR 许可批准,[] 部分将用文件填写。我计划将其与 json 文件一起放入 .devcontainer 文件夹中,但我不确定还要放入此文件夹中以使其运行。正如我之前所说,我是一个完全的初学者。
您还可以从 bx-docker 获得灵感,打造 IAR 的功能性 Docker 映像,然后从那里应用任何进一步的自定义。
然后可以将图像上传到您组织的私有注册表(即
docker push <private-registry>/<user>/bxarm:9.50.2
),以便可以使用 devcontainer 按需拉取它。
对于一个项目来说,它只是创建一个文件
.devcontainer/devcontainer.json
来满足其要求。示例:
{
"name": "BXARM version 9.50.2",
"image": "<private-registry>/<user>/bxarm:9.50.2",
// For debugging
"runArgs": ["--privileged"],
// Suggests installation for the project's required extensions
"customizations": {
"vscode": {
"extensions": [
"ms-vscode-cpptools-extensionpack",
"ms-vscode-remote.vscode-remote-extensionpack",
// For debugging
"iarsystems.iar-debug"
]
}
},
// etc.
// Mount points between host and container
"mounts": [
"type=volume,src=LMS2,dst=/usr/local/etc/IARSystems",
// For debugging
"type=bind,src=/dev/bus/usb,dst=/dev/bus/usb"
]
}
在特权模式下运行容器 (
--privileged
) 是 USB 直通的必要步骤,以便正确识别 IAR 调试器探针。