跳到主要内容

Docker Compose 部署

⚡ 一键启动(推荐)

curl -sSO https://surveyking.cn/surveyking-docker/setup.sh  && bash setup.sh

服务管理

启动服务

cd surveyking
docker compose up -d

停止服务

docker compose down

重启服务

# 重启所有服务
docker compose restart

# 重启特定服务
docker compose restart surveyking-app
docker compose restart surveyking-mysql

查看服务状态

docker compose ps

日志和监控

查看日志

# 查看所有服务日志
docker compose logs

# 查看特定服务日志
docker compose logs surveyking-app
docker compose logs surveyking-mysql

# 实时查看日志
docker compose logs -f surveyking-app

错误日志位置

  • 应用日志docker compose logs surveyking-app
  • 数据库日志docker compose logs surveyking-mysql
  • 容器内应用日志/app/logs/ 目录

数据库管理

查看 MySQL 密码

# 查看生成的密码(格式:MYSQL_PASSWORD=随机密码)
cat ./surveyking/.env | grep MYSQL_PASSWORD

连接数据库

# 进入 MySQL 容器
docker compose exec surveyking-mysql mysql -u surveyking -p

# 从外部连接数据库
mysql -h 127.0.0.1 -P 3306 -u surveyking -p surveyking

数据库信息

  • 数据库名surveyking
  • 用户名surveyking
  • 端口3306(可通过 SK_MYSQL_PORT 自定义)
  • 密码:查看 surveyking/.env 文件中的 MYSQL_PASSWORD

更新应用

# 拉取最新镜像
docker compose pull

# 重启服务
docker compose up -d

# 清理旧镜像(可选)
docker image prune -f

故障排除

检查服务状态

# 查看容器状态
docker compose ps

# 查看资源使用情况
docker stats

常见问题

端口被占用

# 查看端口占用
lsof -i :1991
# 解决方案:指定其他端口
SK_APP_PORT=8080 bash setup.sh

服务启动失败

# 查看详细错误日志
docker compose logs surveyking-app

# 重启服务
docker compose restart surveyking-app

数据库连接失败

# 查看数据库日志
docker compose logs surveyking-mysql

# 检查数据库状态
docker compose exec surveyking-mysql mysql -u surveyking -p -e "SELECT 1"

重置服务

# 完全重置(会删除数据)
docker compose down -v
docker compose up -d

访问系统

注意

部署完成后请立即修改默认密码!

数据备份

# 进入 surveyking 目录
cd surveyking

# 获取密码
MYSQL_PASSWORD=$(grep MYSQL_PASSWORD .env | cut -d'=' -f2)

# 备份数据库到当前目录
docker compose exec surveyking-mysql mysqldump -u surveyking -p${MYSQL_PASSWORD} surveyking > backup_$(date +%Y%m%d_%H%M%S).sql

# 恢复数据库
docker compose exec -i surveyking-mysql mysql -u surveyking -p${MYSQL_PASSWORD} surveyking < backup_20241201_120000.sql

手动备份(需要输入密码)

cd surveyking

# 备份数据库(会提示输入密码)
docker compose exec surveyking-mysql mysqldump -u surveyking -p surveyking > backup.sql

# 恢复数据库(会提示输入密码)
docker compose exec -i surveyking-mysql mysql -u surveyking -p surveyking < backup.sql