logo
0
0
WeChat Login
移除强制从jshainei/ai_tmp_work 分支 ubuntu-development@main 强制合并导致问题

Ubuntu Development Environment (Docker)

基于 Ubuntu 24.04 的全功能开发环境,集成了 VNC 远程桌面、Web IDE、多种中间件和常用开发工具。


快速开始

# 构建镜像 docker build -t ubuntu-dev . # 运行容器(暴露所有服务端口) docker run -d --name ubuntu-dev \ -p 5901:5901 \ -p 8080:8080 \ -p 8081:8081 \ -p 8082:8082 \ -p 8083:8083 \ -p 8084:8084 \ -p 8085:8085 \ -p 3306:3306 \ -p 6379:6379 \ -p 5672:5672 \ -p 1883:1883 \ ubuntu-dev # 查看日志(所有服务日志统一在 /env_log/ 目录) docker exec -it ubuntu-dev tail -f /env_log/init-health.log # 查看某个服务的具体日志 docker exec -it ubuntu-dev tail -f /env_log/mysql.log docker exec -it ubuntu-dev tail -f /env_log/redis.log

默认密码 / 账号信息

服务用户名密码说明
VNC / noVNCCNB.pool@2025VNC 连接密码
MySQLrootCNB.pool@2025root 账号
RedisCNB.pool@2025requirepass
RabbitMQsuperadminCNB.pool@2025管理员账号(guest 已删除)
code-server无密码 (--auth none)Web IDE

所有服务的统一默认密码环境变量为 COMMAND_PASSWORD(当前值:CNB.pool@2025


端口说明

端口服务访问方式
5901TigerVNC (直连)VNC 客户端连接 <host>:5901
8080code-server (VS Code Web)浏览器打开 http://<host>:8080
8081noVNC (Web VNC)浏览器打开 http://<host>:8081
8082EMQX DashboardMQTT 管理界面 http://<host>:8082
8083RabbitMQ Management浏览器管理界面 http://<host>:8083
8084Nginx + PHP 8.3PHP 网站 http://<host>:8084
8085Tomcat 8Java Web 应用 http://<host>:8085
3306MySQL数据库连接
6379Redis缓存/消息队列连接
5672RabbitMQ (AMQP)消息队列连接
1883EMQX (MQTT)MQTT TCP 连接

服务详细说明

1. VNC 远程桌面 (推荐使用 noVNC)

  • 桌面环境: XFCE4
  • 分辨率: 1920x1080
  • noVNC 访问: 浏览器访问 http://<host>:8081
    • 打开后在左侧面板填写 Host=localhost、Port=5901,点击 Connect
    • 输入 VNC 密码即可看到桌面
  • VNC 客户端: 直接连接 <host>:5901

2. code-server (Web IDE)

  • 基于 VS Code 的 Web 版本
  • 预装中文语言包及常用扩展(Python、Go、Java、Vue、C/C++ 等)
  • 无需认证直接使用

3. MySQL 8.x

# 在容器内连接 mysql -u root -p'CNB.pool@2025' # 从外部连接(需映射端口) mysql -h <宿主机IP> -P 3306 -u root -p'CNB.pool@2025'

4. Redis

# CLI 连接 redis-cli -a 'CNB.pool@2025' # 外部连接参数 Host: <宿主机IP>, Port: 6379, Password: CNB.pool@2025

注意:Redis 已绑定 0.0.0.0,允许外部连接。

5. RabbitMQ

  • 管理界面: http://<host>:8083
  • 用户名: superadmin,密码: CNB.pool@2025
  • 默认启用了 rabbitmq_management 插件

6. Nginx + PHP 8.3

  • PHP 站点根目录: /wwwroot/localhost_8084
  • PHP-FPM 通过 Unix socket 通信
  • 访问 http://<host>:8084 可查看 phpinfo()

7. Tomcat 8

  • 安装路径: /opt/tomcat
  • 默认端口: 8085
  • 部署路径: /opt/tomcat/webapps/

8. EMQX (MQTT Broker)

  • 版本: 5.8.4
  • MQTT 端口: 1883
  • Dashboard: http://<host>:8082
  • 默认用户名: admin,默认密码: public(首次登录后建议修改)

开发工具链

类别工具版本
语言Python3.12
语言Node.jsLTS
语言JDK1.8 (Adoptium Temurin, HotSpot)
语言Go1.23.6
包管理pip (清华源)
包管理npm/pnpm (npmmirror)
包管理Composer (阿里云)
构建工具Maven3.9.15 (阿里云镜像)
IDEcode-server最新版
桌面WPS Office最新版
桌面QQLinux 版
桌面微信UOS 适配版
桌面Google Chrome最新版

Python 常用包(预安装)

numpy, pandas, requests, flask, redis, mysql (PyMySQL), sqlalchemy, pillow, matplotlib, opencv-python-headless, boto3, beautifulsoup4, celery, pika, tqdm, colorlog, aliyun-sdk 系列, tencentcloud-sdk-python

code-server 预装扩展

  • 中文语言包、YAML、ESLint
  • Python、C/C++、CMake、Makefile、LLDB 调试
  • Go、Java Pack、Vue / Vue TypeScript Plugin
  • MySQL Client、Hex Editor

桌面快捷方式

通过 noVNC 进入桌面后可以看到以下快捷方式:

快捷方式应用
WPS Office办公套件
QQ即时通讯
WeChat微信
Sunlogin向日葵远程控制
Google Chrome浏览器
Code ServerWeb IDE 快捷入口

健康检查与自动重启

容器默认运行 /init.sh,负责 启动所有中间件服务 + 持续健康监控

  • 检测间隔: 每 30 秒一次
  • 异常处理: 自动尝试重启失败的服务
  • 日志统一目录: /env_log/

日志文件清单

文件对应服务
/env_log/init-health.loginit.sh 自身(启动+健康检查)
/env_log/redis.logRedis
/env_log/mysql.logMySQL
/env_log/rabbitmq.logRabbitMQ
/env_log/php-fpm.logPHP-FPM 8.3
/env_log/nginx_error.logNginx 错误日志
/env_log/nginx_access.logNginx 访问日志
/env_log/tomcat-catalina.outTomcat Catalina 输出
/env_log/tomcat.logTomcat 启动日志
/env_log/emqx.logEMQX MQTT Broker
/env_log/vnc.logTigerVNC Server
/env_log/websockify.logwebsockify (noVNC)
/env_log/code-server.logcode-server (VS Code Web)
/env_log/dbus.logD-Bus daemon

常用查看命令

# 查看所有健康检查日志 docker exec -it ubuntu-dev tail -f /env_log/init-health.log # 查看某个服务的日志 docker exec -it ubuntu-dev tail -100 /env_log/mysql.log # 查看所有日志文件列表 docker exec -it ubuntu-dev ls -la /env_log/

常见问题

Q: noVNC 页面打开了但连不上?

  • 确认 Host 填写 localhost,Port 填写 5901
  • 检查容器是否正常运行:docker ps
  • 查看容器日志:docker logs ubuntu-dev

Q: 如何修改默认密码?

修改 Dockerfile 中的 COMMAND_PASSWORD 环境变量值后重新构建即可。该变量同时影响:

  • VNC 密码
  • MySQL root 密码
  • Redis requirepass
  • RabbitMQ superadmin 密码

Q: 如何持久化数据?

使用 Docker volume 或挂载目录:

-v mysql_data:/var/lib/mysql \ -v redis_data:/var/lib/redis \ -v workspace:/workspace

环境变量

变量名默认值说明
COMMAND_PASSWORDCNB.pool@2025统一服务密码
LANGzh_CN.UTF-8系统语言
DISPLAY:1X11 显示编号
JAVA_HOME/opt/javaJava Home (JDK 1.8)
GOPROXYhttps://goproxy.cn,directGo 模块代理

About

基于 ubuntu 24.04 的开发环境 默认安装好 python , c++ 依赖 默认安装好 redis , mysql 密码都为 CNB.cool@2025

Language
Dockerfile52.2%
Shell47.8%