0

0

如何使用VSCode进行Docker容器内的开发【教程】

夜晨

夜晨

发布时间:2026-01-21 19:00:33

|

396人浏览过

|

来源于php中文网

原创

不能直接在宿主机装依赖而要进容器开发,因为环境一致性是核心诉求,需确保开发与生产环境的node版本、pip路径、glibc等完全一致。

如何使用vscode进行docker容器内的开发【教程】

为什么不能直接在宿主机装依赖,而要进容器开发

因为环境一致性是核心诉求。本地装的 node 版本、pip 包路径、甚至 glibc 小版本,都可能和生产镜像不一致。Docker 容器内开发不是为了炫技,而是让「写代码时的环境」和「上线跑的环境」完全对齐——比如你用 python:3.11-slim 镜像,那开发时就该在这个镜像里装 black、跑 pytest、连容器内的 redis,而不是靠本地 redis-cli 去连容器端口

用 Remote-Containers 扩展打开项目目录后没反应

常见原因是工作区根目录下缺少 .devcontainer/devcontainer.json,VSCode 不会自动猜测你要进哪个容器。必须手动创建这个文件,并明确指定镜像或 Dockerfile:

  • 最简配置:指定基础镜像,如 "image": "mcr.microsoft.com/devcontainers/python:3.11"
  • 若已有 Dockerfile,改用 "dockerFile": "Dockerfile.dev"(路径需相对于工作区)
  • 务必检查 docker CLI 是否可用:docker version 能正常返回,否则扩展会静默失败
  • Windows 用户注意:WSL2 后端必须启用,且 Docker Desktop 设置中要勾选 “Use the WSL 2 based engine”

容器启动后 Python 解释器找不到,或者 pip install 失败

这是路径和权限的典型错配。Remote-Containers 默认把项目挂载到 /workspaces/your-project,但很多镜像的 PYTHONPATHpip 默认不认这个路径:

易优乐器古筝书画培训类网站源码1.6.9
易优乐器古筝书画培训类网站源码1.6.9

易优乐器古筝书画培训类网站源码是基于易优cms开发,适合企业进行教育培训展示使用。程序内核为Thinkphp5.0开发,后台简洁,为企业网站而生。 这是一套安装就能建站的程序,不定期更新程序BUG,更新网站功能。 我们提供的不仅是模板这么简单,我们还提供程序相关咨询、协助安装等服务。 默认不包含小程序插件,需要另外单独购买插件。 模板安装步骤 1、请将安装包Z

下载
  • devcontainer.json 中加 "customizations": { "vscode": { "settings": { "python.defaultInterpreterPath": "/usr/local/bin/python" } } }
  • 如果要用虚拟环境,别在宿主机建 venv,而是在容器内运行 python -m venv /workspace/.venv,然后在设置里指向它
  • pip install 报权限错误?不是加 sudo,而是改 devcontainer.json"remoteUser": "root"(仅开发用),或更稳妥地用 "features" 安装包(如 "ghcr.io/devcontainers/features/python:1"

调试 Flask/FastAPI 时断点不命中,或热重载失效

根本原因在于容器默认没有暴露调试端口,且进程没以调试模式启动。VSCode 的调试器需要双向通信,不是简单跑个 python app.py 就行:

  • 确保 devcontainer.json 有端口转发:"forwardPorts": [5000, 8000],否则浏览器打不开 localhost:5000
  • 启动命令得带调试参数,例如 FastAPI:用 uvicorn main:app --reload --host 0.0.0.0:8000,其中 --host 0.0.0.0 是关键,不然只监听 localhost(容器内 loopback)
  • VSCode 调试配置(.vscode/launch.json)里 "justMyCode": false 可能导致跳过断点,建议设为 true 并确认源码路径映射正确("pathMappings"
容器内开发真正卡住人的地方,往往不是“怎么连进去”,而是“进去之后,哪些路径、端口、用户权限、网络模式是默认关闭或隔离的”。这些细节不会报红错,只会让你觉得“代码没变,但就是不生效”。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

769

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

661

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

764

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

659

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1325

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

549

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

730

2023.08.11

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

1

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 11.4万人学习

Django 教程
Django 教程

共28课时 | 3.3万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号