You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置VSCode点击运行按钮时在Docker容器中执行Python脚本

配置VSCode实现一键Docker构建并运行Python脚本

我希望实现VSCode右上角的“运行”按钮点击后,自动完成以下流程:

  1. 检查指定Docker镜像是否存在
  2. 若镜像不存在则自动构建
  3. 在Docker容器中运行当前打开的Python脚本

目前已配置launch.json和tasks.json但未生效,目标是让非技术人员只需打开项目目录的VSCode,点击运行按钮即可执行脚本,无需手动操作Docker。已知调试模式下可实现该功能,但操作不够直观;普通运行模式无法触发流程。寻求可行解决方案,非VSCode方案也可。

当前配置文件

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Docker: Run Python Demo scripts",
            "type": "docker",
            "request": "launch",
            "preLaunchTask": "docker-run",
            "python": {
                "pathMappings": [
                    {
                        "localRoot": "${workspaceFolder}",
                        "remoteRoot": "/opt/demos"
                    }
                ],
                "projectType": "general",
                "file": "/opt/demos/${relativeFile}"
            }
        }
    ]
}

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "docker-build",
            "label": "docker-build",
            "platform": "python",
            "dockerBuild": {
                "tag": "product-demo-scripts:latest",
                "dockerfile": "${workspaceFolder}/Dockerfile",
                "context": "${workspaceFolder}",
                "pull": true
            }
        },
        {
            "type": "docker-run",
            "label": "docker-run",
            "dependsOn": [
                "docker-build"
            ],
            "python": {
                "file": "/opt/demos/${relativeFile}"
            }
        }
    ]
}

解决方案

方案一:优化VSCode配置(适配普通运行按钮)

当前配置的核心问题是docker-run任务未指定要使用的镜像,且普通运行按钮未关联到自定义任务。按以下步骤修改:

  1. 修正tasks.json
    在docker-run任务中添加镜像指定和路径映射,确保容器使用正确的镜像并挂载本地代码:

    {
        "version": "2.0.0",
        "tasks": [
            {
                "type": "docker-build",
                "label": "docker-build",
                "platform": "python",
                "dockerBuild": {
                    "tag": "product-demo-scripts:latest",
                    "dockerfile": "${workspaceFolder}/Dockerfile",
                    "context": "${workspaceFolder}",
                    "pull": true
                }
            },
            {
                "type": "docker-run",
                "label": "docker-run",
                "dependsOn": ["docker-build"],
                "image": "product-demo-scripts:latest", // 指定使用构建好的镜像
                "python": {
                    "file": "/opt/demos/${relativeFile}",
                    "pathMappings": [ // 添加路径映射,确保本地代码同步到容器
                        {
                            "localRoot": "${workspaceFolder}",
                            "remoteRoot": "/opt/demos"
                        }
                    ]
                }
            }
        ]
    }
    
  2. 设置默认运行任务
    在VSCode的settings.json中添加以下配置,让右上角的运行按钮默认触发docker-run任务:

    {
        "tasks.defaultTask": "docker-run",
        "python.runner": "tasks"
    }
    
  3. 验证Dockerfile正确性
    确保项目根目录的Dockerfile包含必要配置,示例:

    FROM python:3.10-slim
    WORKDIR /opt/demos
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    COPY . .
    

方案二:非VSCode替代方案(脚本一键执行)

如果不想依赖VSCode插件,可编写Shell/PowerShell脚本,让用户双击或通过VSCode终端执行:

Linux/macOS Shell脚本(run.sh)

#!/bin/bash
IMAGE_NAME="product-demo-scripts:latest"
SCRIPT_PATH="$1"

# 检查镜像是否存在
if ! docker image inspect "$IMAGE_NAME" &> /dev/null; then
    echo "镜像不存在,开始构建..."
    docker build -t "$IMAGE_NAME" .
fi

# 运行容器执行脚本(--rm 结束后自动删除容器)
docker run --rm -v "$(pwd):/opt/demos" "$IMAGE_NAME" python "/opt/demos/$SCRIPT_PATH"

Windows批处理脚本(run.bat)

@echo off
set IMAGE_NAME=product-demo-scripts:latest
set SCRIPT_PATH=%1

docker image inspect %IMAGE_NAME% >nul 2>&1
if %errorlevel% neq 0 (
    echo 镜像不存在,开始构建...
    docker build -t %IMAGE_NAME% .
)

docker run --rm -v "%cd%:/opt/demos" %IMAGE_NAME% python "/opt/demos/%SCRIPT_PATH%"

使用方式:

  1. 将脚本放在项目根目录,给Shell脚本添加执行权限(chmod +x run.sh)
  2. 在VSCode中打开要运行的Python文件,打开终端执行:
    • Linux/macOS:./run.sh ${relativeFile}
    • Windows:.\\run.bat ${relativeFile}
  3. 也可在VSCode中添加调用脚本的任务,设置为默认任务,点击运行按钮即可触发。

内容的提问来源于stack exchange,提问作者TheKingOfRandom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:17:38