0

0

vscode如何与Docker集成_从构建到部署的流程是怎样的【教程】

夜晨

夜晨

发布时间:2026-01-25 10:15:09

|

355人浏览过

|

来源于php中文网

原创

VS Code 通过 Docker 插件集成 Docker,但不替代 CLI 工具;需预先安装并验证 docker 命令可用,安装官方插件后可右键构建镜像、启动 compose 服务,部署需手动处理镜像打标、登录 registry 和远程运行。

vscode如何与docker集成_从构建到部署的流程是怎样的【教程】

VS Code 本身不直接构建或运行 Docker 容器,它通过插件和 CLI 工具协同完成集成;真正的构建、运行、部署动作仍由本地 docker 命令或远程 Docker daemon 执行,VS Code 只是提供配置引导、命令封装和可视化界面。

安装必要插件并验证 Docker CLI 可用性

VS Code 的 Docker 集成依赖两个基础条件:系统已安装且可执行 docker(含 docker builddocker run 等),以及安装官方 Docker 插件(由 Microsoft 提供)。

  • 在终端运行 docker --versiondocker info,确认 daemon 正常响应;若提示 Cannot connect to the Docker daemon,说明 Docker Desktop 未启动或 WSL2 后端未就绪(Windows 用户常见)
  • VS Code 中打开 Extensions(Ctrl+Shift+X),搜索并安装 Docker 插件;安装后重启 VS Code,左侧活动栏会出现鲸鱼图标
  • 插件不会自动帮你装 Docker,也不会替代 docker-composebuildx —— 它只读取项目中的 Dockerfiledocker-compose.yml 并提供右键菜单和命令面板快捷入口

在项目中添加 Dockerfile 后如何一键构建镜像

插件检测到根目录或子目录存在 Dockerfile,会自动激活上下文菜单。但“一键构建”不是魔法,它本质是调用 docker build 并传入预设参数。

  • 右键点击 Dockerfile → 选择 Build Image...,会弹出输入框让你填写镜像名(如 myapp:latest)和构建上下文路径(默认 .,但若 Dockerfile./docker/ 下,需手动改为 ./docker
  • 构建过程输出直接显示在 VS Code 的 Terminal > Docker 面板,等同于你手动执行 docker build -t myapp:latest .
  • 注意:插件默认不启用 --no-cache--progress=plain,如需调试构建层缓存问题,仍得切到终端手动加参数
  • 若项目使用多阶段构建(如 FROM golang AS builder),插件支持指定 --target,但需在右键菜单中选 Build Image with Target...,再输入目标阶段名

docker-compose.yml 启动服务时为什么容器没起来

VS Code 的 Docker 插件能识别 docker-compose.yml,但“启动”操作仅调用 docker compose up(v2)或 docker-compose up(v1),不处理环境变量缺失、端口冲突或依赖服务未就绪等问题。

琅琅配音
琅琅配音

全能AI配音神器

下载
  • 确保文件名为 docker-compose.yml(不是 .yaml)且缩进为空格(YAML 对缩进敏感)
  • 检查 services.xxx.ports 是否写成字符串(如 "3000:3000")而非数组(- "3000:3000"),否则插件可能解析失败
  • 右键 docker-compose.ymlCompose Up,若终端报错 ERROR: for app Cannot start service app: driver failed programming external connectivity,大概率是 3000 端口已被占用,需先 lsof -i :3000(macOS/Linux)或 netstat -ano | findstr :3000(Windows)查杀进程
  • 插件不自动加载 .env 文件里的变量(如 POSTGRES_PASSWORD),必须确保该文件存在且格式为 KEY=VALUE 每行一条,Docker Compose CLI 才会读取

远程部署到服务器前要确认的三件事

VS Code 的 Docker 插件不提供 SSH 部署能力,所谓“部署”实际是本地构建 + 推送到远程 registry + 远程服务器拉取运行,中间环节需人工衔接。

  • 本地镜像必须打上带 registry 地址的 tag,例如 docker tag myapp:latest registry.example.com/myapp:prod,否则 docker push 会报 denied: requested access to the resource is denied
  • 推送前需登录:docker login registry.example.com;插件不保存凭据,每次新机器都要重登
  • 远程服务器上不能只靠 docker run 启动,生产环境应使用 systemddocker-compose 管理生命周期;VS Code 无法直接触发远程 systemctl restart myapp,这部分需另配 CI 脚本或手动操作

真正卡住人的往往不是 VS Code 点几下,而是 DockerfileCOPY 路径写错、docker-compose.ymldepends_on 没配健康检查、或者 registry 权限没开——这些细节 VS Code 插件既不校验也不提示,得靠你盯着终端输出逐行比对。

相关专题

更多
golang如何定义变量
golang如何定义变量

golang定义变量的方法:1、声明变量并赋予初始值“var age int =值”;2、声明变量但不赋初始值“var age int”;3、使用短变量声明“age :=值”等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

180

2024.02.23

golang有哪些数据转换方法
golang有哪些数据转换方法

golang数据转换方法:1、类型转换操作符;2、类型断言;3、字符串和数字之间的转换;4、JSON序列化和反序列化;5、使用标准库进行数据转换;6、使用第三方库进行数据转换;7、自定义数据转换函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

228

2024.02.23

golang常用库有哪些
golang常用库有哪些

golang常用库有:1、标准库;2、字符串处理库;3、网络库;4、加密库;5、压缩库;6、xml和json解析库;7、日期和时间库;8、数据库操作库;9、文件操作库;10、图像处理库。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

341

2024.02.23

golang和python的区别是什么
golang和python的区别是什么

golang和python的区别是:1、golang是一种编译型语言,而python是一种解释型语言;2、golang天生支持并发编程,而python对并发与并行的支持相对较弱等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

209

2024.03.05

golang是免费的吗
golang是免费的吗

golang是免费的。golang是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的开源编程语言,采用bsd开源协议。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

393

2024.05.21

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

220

2025.06.09

golang相关判断方法
golang相关判断方法

本专题整合了golang相关判断方法,想了解更详细的相关内容,请阅读下面的文章。

192

2025.06.10

golang数组使用方法
golang数组使用方法

本专题整合了golang数组用法,想了解更多的相关内容,请阅读专题下面的文章。

315

2025.06.17

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

58

2026.01.23

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.8万人学习

Git 教程
Git 教程

共21课时 | 3万人学习

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

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