当前位置: 首页 > news >正文

vs code 下docker使用方法,以php 项目为示例

下面以 PHP 项目为例,详细介绍在 VS Code 中使用 Docker 的完整流程。

一、项目准备

首先创建一个简单的 PHP 项目结构:

my-php-project/
├── src/
│   └── index.php
├── Dockerfile
├── docker-compose.yml
└── .devcontainer/└── devcontainer.json

src/index.php 内容:

<?php
echo "Hello Docker PHP!<br>";
echo "当前时间: " . date('Y-m-d H:i:s') . "<br>";
echo "PHP 版本: " . PHP_VERSION . "<br>";// 测试 MySQL 连接
try {$pdo = new PDO('mysql:host=db;dbname=test', 'root', 'secret');echo "MySQL 连接成功!<br>";
} catch (Exception $e) {echo "MySQL 连接失败: " . $e->getMessage() . "<br>";
}
?>

二、使用 Dockerfile 构建自定义镜像

1. 创建 Dockerfile

# 使用官方 PHP Apache 镜像
FROM php:8.1-apache# 设置工作目录
WORKDIR /var/www/html# 安装系统依赖和 PHP 扩展
RUN apt-get update && apt-get install -y \libpng-dev \libjpeg-dev \libfreetype6-dev \libzip-dev \zip \unzip \&& docker-php-ext-configure gd --with-freetype --with-jpeg \&& docker-php-ext-install gd pdo pdo_mysql zip# 启用 Apache 重写模块
RUN a2enmod rewrite# 复制项目文件
COPY src/ /var/www/html/# 更改文件权限
RUN chown -R www-data:www-data /var/www/html \&& chmod -R 755 /var/www/html# 暴露端口
EXPOSE 80# 启动 Apache
CMD ["apache2-foreground"]

2. 在 VS Code 中构建镜像

  1. 在 VS Code 中打开项目文件夹

  2. 右键点击 Dockerfile → Build Image...

  3. 输入镜像名称:my-php-app:latest

  4. 观察终端中的构建进度

或者使用命令面板:

  • Ctrl+Shift+P → "Docker Images: Build Image"

三、使用 Docker Compose 运行多服务

创建 docker-compose.yml

version: '3.8'services:web:build: .ports:- "8080:80"volumes:- ./src:/var/www/htmldepends_on:- dbenvironment:- APACHE_RUN_USER=www-data- APACHE_RUN_GROUP=www-datadb:image: mysql:8.0environment:MYSQL_ROOT_PASSWORD: secretMYSQL_DATABASE: testMYSQL_USER: app_userMYSQL_PASSWORD: app_passwordvolumes:- mysql_data:/var/lib/mysqlports:- "3306:3306"phpmyadmin:image: phpmyadmin/phpmyadminenvironment:PMA_HOST: dbPMA_PORT: 3306MYSQL_ROOT_PASSWORD: secretports:- "8081:80"depends_on:- dbvolumes:mysql_data:

在 VS Code 中运行

  1. 右键 docker-compose.yml → Compose Up

  2. 或者使用命令面板:Ctrl+Shift+P → "Docker Compose: Up"

  3. 选择 docker-compose.yml 文件

四、使用 Dev Containers 进行开发

创建开发容器配置

.devcontainer/devcontainer.json:

{"name": "PHP Development Container","dockerComposeFile": "../docker-compose.yml","service": "web","workspaceFolder": "/var/www/html","customizations": {"vscode": {"extensions": ["bmewburn.vscode-intelephense-client","mrmlnc.vscode-apache","brapifra.phpserver","ms-azuretools.vscode-docker"],"settings": {"php.validate.executablePath": "/usr/local/bin/php"}}},"forwardPorts": [8080, 8081, 3306],"postCreateCommand": "docker-php-ext-install pdo pdo_mysql && a2enmod rewrite","remoteUser": "root"
}

在容器中开发

  1. Ctrl+Shift+P → "Dev Containers: Reopen in Container"

  2. VS Code 会自动重建容器并安装所有扩展

  3. 现在你就在完整的 PHP 开发环境中了!

五、在 VS Code 中管理容器

1. 查看运行的服务

在 Docker 面板中,你会看到:

  • Containersmy-php-project-web-1my-php-project-db-1my-php-project-phpmyadmin-1

  • Imagesmy-php-app:latestmysql:8.0phpmyadmin/phpmyadmin

2. 常用操作

查看日志:

  • 右键容器 → View Logs

  • 或者点击日志图标

进入容器终端:

  • 右键 web 容器 → Attach Shell

  • 执行命令:php -vcomposer --version 等

重启服务:

  • 右键容器 → Restart

3. 端口转发和访问

VS Code 会自动检测并显示端口转发:

  • http://localhost:8080 - PHP 应用

  • http://localhost:8081 - phpMyAdmin

  • localhost:3306 - MySQL 数据库

六、调试和开发技巧

1. 实时开发

由于使用了 volume 映射 (./src:/var/www/html),你在本地对 src/ 目录的修改会立即反映在容器中。

2. 添加 Composer 支持

修改 Dockerfile,添加 Composer:

# 在 Dockerfile 的依赖安装部分后添加
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer# 如果需要安装依赖,可以添加:
# COPY composer.json composer.lock ./
# RUN composer install --no-dev --optimize-autoloader

3. 使用 Xdebug 调试

修改 Dockerfile 添加 Xdebug:

RUN pecl install xdebug && docker-php-ext-enable xdebug# 添加 Xdebug 配置
RUN echo "zend_extension=xdebug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \&& echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \&& echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

在 VS Code 中创建 .vscode/launch.json

{"version": "0.2.0","configurations": [{"name": "Listen for Xdebug","type": "php","request": "launch","port": 9003,"pathMappings": {"/var/www/html": "${workspaceFolder}/src"}}]
}

七、常用工作流程

日常开发:

  1. Ctrl+Shift+P → "Dev Containers: Reopen in Container"

  2. 在 src/ 目录中编写代码

  3. 浏览器访问 http://localhost:8080 查看变化

  4. 使用内置终端运行 PHP 命令

调试:

  1. 在代码中设置断点

  2. 按 F5 启动调试

  3. 刷新浏览器页面触发断点

数据库管理:

  1. 访问 http://localhost:8081

  2. 服务器: db

  3. 用户名: root

  4. 密码: secret

八、故障排除

常见问题:

  1. 端口被占用

    • 修改 docker-compose.yml 中的端口映射

    • 如:"8082:80" 代替 "8080:80"

  2. 文件权限问题

# 在 Dockerfile 中添加
RUN chown -R www-data:www-data /var/www/html
  1. 扩展未加载

    • 在容器终端中执行:docker-php-ext-install pdo_mysql

    • 重启 Apache:service apache2 restart

查看日志:

  • 在 VS Code Docker 面板中右键容器 → View Logs

  • 或者终端中:docker-compose logs web

这个完整的 PHP Docker 开发环境提供了:

  • ✅ PHP 8.1 + Apache

  • ✅ MySQL 数据库

  • ✅ phpMyAdmin

  • ✅ 代码实时同步

  • ✅ Xdebug 调试支持

  • ✅ 完整的 VS Code 集成

开始你的 PHP Docker 开发之旅吧!

http://www.dtcms.com/a/528622.html

相关文章:

  • 番禺网站建设哪里好深圳十大传媒公司
  • 前端常见的设计模式
  • 亚马逊云渠道商:如何通过配置自动替换构建故障自愈的云架构?
  • 豆包 Python 和 Java 的 AI 集成及模型转换
  • 深入解析C++命令模式:设计原理与实际应用
  • 商城网站建设目标上海前十名文化传媒公司
  • ExpressionVisitor 的使用场景及方法
  • 《3D端游开放世界动态天气系统与场景交互优化实践日志》
  • Date类自主实现后的反思
  • 网络渗流:爆炸渗流
  • 购物网站建设款流程国外优秀设计网站大全
  • 【C++】STL容器-stack和queue的使用与模拟实现
  • numpy学习笔记(持续更新)
  • linux schedule函数学习
  • 教育培训网站有哪些辽宁网站建设企业定制公司
  • Python机器学习---6.集成学习与随机森林
  • 厦门网站建设公司新能源汽车价格表图片及价格表
  • 二分查找栈堆动态规划
  • 【脚本】提取phpstudy网站对应的PHP版本
  • 沈阳做平板网站移动互联网开发是干什么的
  • StreamX部署详细步骤
  • java 正则表达式 所有的优先级
  • 做pc端网站平台网站做游戏活动
  • 【开发者导航】全自动 AI 视频创作与发布工具:LuoGen-agent
  • 网站 空间地址是什么苏州网站制作公司
  • Qt-多线程编程:互斥量 信号量
  • TERMSRV!WinStationLpcThread函数和TERMSRV!WinStationLpcHandleConnectionRequest函数分析
  • 网站体验方案wordpress更改前端引用
  • vue-day01
  • LLM驱动的自动化购车顾问及评测系统