基于 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 / noVNC | — | CNB.pool@2025 | VNC 连接密码 |
| MySQL | root | CNB.pool@2025 | root 账号 |
| Redis | — | CNB.pool@2025 | requirepass |
| RabbitMQ | superadmin | CNB.pool@2025 | 管理员账号(guest 已删除) |
| code-server | — | 无密码 (--auth none) | Web IDE |
所有服务的统一默认密码环境变量为
COMMAND_PASSWORD(当前值:CNB.pool@2025)
| 端口 | 服务 | 访问方式 |
|---|---|---|
| 5901 | TigerVNC (直连) | VNC 客户端连接 <host>:5901 |
| 8080 | code-server (VS Code Web) | 浏览器打开 http://<host>:8080 |
| 8081 | noVNC (Web VNC) | 浏览器打开 http://<host>:8081 |
| 8082 | EMQX Dashboard | MQTT 管理界面 http://<host>:8082 |
| 8083 | RabbitMQ Management | 浏览器管理界面 http://<host>:8083 |
| 8084 | Nginx + PHP 8.3 | PHP 网站 http://<host>:8084 |
| 8085 | Tomcat 8 | Java Web 应用 http://<host>:8085 |
| 3306 | MySQL | 数据库连接 |
| 6379 | Redis | 缓存/消息队列连接 |
| 5672 | RabbitMQ (AMQP) | 消息队列连接 |
| 1883 | EMQX (MQTT) | MQTT TCP 连接 |
http://<host>:8081
localhost、Port=5901,点击 Connect<host>:5901# 在容器内连接
mysql -u root -p'CNB.pool@2025'
# 从外部连接(需映射端口)
mysql -h <宿主机IP> -P 3306 -u root -p'CNB.pool@2025'
# CLI 连接
redis-cli -a 'CNB.pool@2025'
# 外部连接参数
Host: <宿主机IP>, Port: 6379, Password: CNB.pool@2025
注意:Redis 已绑定
0.0.0.0,允许外部连接。
http://<host>:8083superadmin,密码: CNB.pool@2025rabbitmq_management 插件/wwwroot/localhost_8084http://<host>:8084 可查看 phpinfo()/opt/tomcat/opt/tomcat/webapps/http://<host>:8082admin,默认密码: public(首次登录后建议修改)| 类别 | 工具 | 版本 |
|---|---|---|
| 语言 | Python | 3.12 |
| 语言 | Node.js | LTS |
| 语言 | JDK | 1.8 (Adoptium Temurin, HotSpot) |
| 语言 | Go | 1.23.6 |
| 包管理 | pip (清华源) | — |
| 包管理 | npm/pnpm (npmmirror) | — |
| 包管理 | Composer (阿里云) | — |
| 构建工具 | Maven | 3.9.15 (阿里云镜像) |
| IDE | code-server | 最新版 |
| 桌面 | WPS Office | 最新版 |
| 桌面 | Linux 版 | |
| 桌面 | 微信 | UOS 适配版 |
| 桌面 | Google Chrome | 最新版 |
numpy, pandas, requests, flask, redis, mysql (PyMySQL), sqlalchemy, pillow, matplotlib, opencv-python-headless, boto3, beautifulsoup4, celery, pika, tqdm, colorlog, aliyun-sdk 系列, tencentcloud-sdk-python
通过 noVNC 进入桌面后可以看到以下快捷方式:
| 快捷方式 | 应用 |
|---|---|
| WPS Office | 办公套件 |
| 即时通讯 | |
| 微信 | |
| Sunlogin | 向日葵远程控制 |
| Google Chrome | 浏览器 |
| Code Server | Web IDE 快捷入口 |
容器默认运行 /init.sh,负责 启动所有中间件服务 + 持续健康监控:
/env_log/| 文件 | 对应服务 |
|---|---|
/env_log/init-health.log | init.sh 自身(启动+健康检查) |
/env_log/redis.log | Redis |
/env_log/mysql.log | MySQL |
/env_log/rabbitmq.log | RabbitMQ |
/env_log/php-fpm.log | PHP-FPM 8.3 |
/env_log/nginx_error.log | Nginx 错误日志 |
/env_log/nginx_access.log | Nginx 访问日志 |
/env_log/tomcat-catalina.out | Tomcat Catalina 输出 |
/env_log/tomcat.log | Tomcat 启动日志 |
/env_log/emqx.log | EMQX MQTT Broker |
/env_log/vnc.log | TigerVNC Server |
/env_log/websockify.log | websockify (noVNC) |
/env_log/code-server.log | code-server (VS Code Web) |
/env_log/dbus.log | D-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/
localhost,Port 填写 5901docker psdocker logs ubuntu-dev修改 Dockerfile 中的 COMMAND_PASSWORD 环境变量值后重新构建即可。该变量同时影响:
使用 Docker volume 或挂载目录:
-v mysql_data:/var/lib/mysql \ -v redis_data:/var/lib/redis \ -v workspace:/workspace
| 变量名 | 默认值 | 说明 |
|---|---|---|
COMMAND_PASSWORD | CNB.pool@2025 | 统一服务密码 |
LANG | zh_CN.UTF-8 | 系统语言 |
DISPLAY | :1 | X11 显示编号 |
JAVA_HOME | /opt/java | Java Home (JDK 1.8) |
GOPROXY | https://goproxy.cn,direct | Go 模块代理 |