Docker

 
docker-compose up --build -d 直接重新打包构建
 

Nginx

 
docker run -d \
--name nginx --restart always \
-p 80:80 -p 443:443 \
-e "TZ=Asia/Shanghai" \
-v /home/wms/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/wms/nginx/conf.d:/etc/nginx/conf.d \
-v /home/wms/nginx/logs:/var/log/nginx \
-v /home/wms/nginx/cert:/etc/nginx/cert \
-v /home/wms/nginx/html:/usr/share/nginx/html \
docker.1ms.run/nginx
 

Minio

 
有图形化的最后一个版本,但是协议更改了
 
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z 
 

Nacos

docker run --name nacos-standalone \
    -e MODE=standalone \
    -e NACOS_AUTH_TOKEN=4a8d7e3f1b9c6d5a0e2f8b7c6d5a0e2f8b7c6d5a0e2f8b7c6d5a0e2f8b7c6d5 \
    -e NACOS_AUTH_IDENTITY_KEY=a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8 \
    -e NACOS_AUTH_IDENTITY_VALUE=a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8 \
    -p 8080:8080 \
    -p 8848:8848 \
    -p 9848:9848 \
    -d nacos/nacos-server:latest

Portainer

docker run -d --restart=always --privileged=true --name portainer -p 9010:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer 

MySQL

docker network create my-network
 
docker run -d \
  --name ibms-mysql \
  --restart always \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=BoerMes#0917 \
  -p 3307:3306 \
  -v ./mysql/init:/docker-entrypoint-initdb.d \
  -v ./mysql/data:/var/lib/mysql \
  --health-cmd "mysqladmin ping -h localhost" \
  --health-interval 5s \
  --health-timeout 10s \
  --health-retries 10 \
  --health-start-period 15s \
  mysql:8.4 \

Redis

docker run -d \
  --name redis \
  --hostname redis \
  --restart always \
  --privileged \
  -p 6379:6379 \
  -v ./redis/redis.conf:/usr/local/etc/redis/redis.conf \
  --network my-network \
  --health-cmd "redis-cli ping" \
  --health-interval 10s \
  --health-timeout 5s \
  --health-retries 3 \
  redis:6.2 \
  redis-server /usr/local/etc/redis/redis.conf

Docker部署命令

1. 启动服务
docker-compose up
后台运行:docker-compose up -d
强制重建镜像:docker-compose up --build
只启动特定服务:docker-compose up service1 service2
2. 停止服务
docker-compose down
同时删除卷:docker-compose down -v
同时删除镜像:docker-compose down --rmi all
3. 查看服务状态    
docker-compose ps
4. 查看运行日志
docker-compose logs
查看特定服务日志:docker-compose logs service_name
实时跟踪日志:docker-compose logs -f
 
服务管理
5. 启动/停止/重启服务
docker-compose start
docker-compose stop
docker-compose restart
6. 暂停/恢复服务
docker-compose pause service_name
docker-compose unpause service_name
 
镜像管理
7. 构建镜像
docker-compose build
强制重建:docker-compose build --no-cache
只构建特定服务:docker-compose build service_name
8. 拉取镜像
docker-compose pull
 
实用命令
9. 执行命令
docker-compose exec service_name command
示例:进入容器bash
docker-compose exec web bash
10. 查看服务端口
docker-compose port service_name port_number
11. 查看服务配置
docker-compose config
验证配置:docker-compose config -q
12. 缩放服务实例
docker-compose scale service_name=num_instances
 
环境管理
13. 环境变量文件
默认使用 .env 文件,或指定:
docker-compose --env-file .env.dev up
14. 使用不同配置文件
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
 
常用组合命令
完全重建并启动服务:docker-compose down && docker-compose up -d --build
查看服务资源使用:docker-compose top
删除所有停止的容器和未使用的镜像:docker-compose down --rmi all -v
 
部署点歌系统时碰到的相关问题
1.image是构建时候容器名字和标签 container_name是要启动镜像的名字
2.docker-compose启动的时候会创建一个默认的网络imusic_default
3.后端服务启动失败(检查日志发现mysql数据库有问题:docker-compose怎么进入mysql容器中去执行相关的命令)
docker-compose exec imusic-mysql mysql -u root -p
docker-compose exec imusic-mysql ls -la /docker-entrypoint-initdb.d/ 查看sql语句是否存在容器中
docker-compose exec imusic-mysql mysql -u root -p -e "use ry-vue;source /docker-entrypoint-initdb.d/ry.sql;"加载sql到mysql数据库中
 
怎么重建docker-compose镜像 
# 停止服务并删除所有相关资源(包括未使用的镜像和卷)
docker-compose down --rmi all -v
docker compose down --rmi all -v
# 完整重建
docker-compose up -d --build 
docker compose up -d --build 
docker-compose logs -f > compose.log 2>&1 &
 
后端服务的mysql地址要改成容器名字imusic-mysql,缓存redis要改成imusic-redis,文件存储minio改成imusic-minio
数据库脚本头部需要添加set names 'utf8';(防止乱码)
 
查看nginx容器内有没有数据 docker exec -it imusic-nginx sh -c "ls -la /usr/share/nginx/html/"
 
windows怎么启动jar包后台以及保存日志?
javaw -jar your-app.jar > app.log (将标准输出重定向到 app.log 文件。) 2>&1 (将错误输出合并到标准输出(即日志文件)。)
 
Linux怎么启动jar包后台以及保存日志?
nohup java -jar your-app.jar > app.log 2>&1 &
nohup:防止进程因终端关闭而被终止(忽略 SIGHUP 信号)。
> app.log:将标准输出(stdout)重定向到 app.log 文件。
2>&1:将标准错误(stderr)合并到标准输出(即日志文件)。
&:后台运行。
查看日志
    tail -f app.log  # 实时查看日志
    cat app.log      # 查看完整日志
停止进程
    查找进程 ID:ps aux | grep "java -jar your-app.jar"
    终止进程:kill -9 <PID>
使用 systemd 管理服务(推荐生产环境)
1.没有重建镜像,启动的还是以前的
2.将mysql5.4换成8.4的时候,要清空原来的mysql相关配置数据
3.后端怎么根据后缀启动相关的配置文件
4.替换jar包的时候,名字不对,启动了之前未清理的jar包,导致发生错误
5.前端怎么根据后缀编译相关的dist RuoYi-Vue/vue项目配置env_ruoyi vue 切换开发和正式环境 env-CSDN博客
6.镜像标签中间全角字符直接报错
7.在mysql中直接操作的话,需要;结尾
8.mysql5.4不支持mysql8的语法,Unknown collation: 'utf8mb4_0900_ai_ci'
9.403页面访问的时候,发现nginx容器中没有页面那个目录,复制不进去,挂载数据卷在构建之后,就把空的数据卷挂载到html中,就会把复制进去的文件给覆盖掉(大坑)
 
compose常用服务配置参考 docker-compose教程(安装,使用, 快速入门)-CSDN博客
build
    可以指定包含构建上下文的路径,如果你同时指定image和build,则compose会通过build指定的目录构建容器镜像,而构建的镜像名为image中指定的镜像名和标签。
    context 包含Dockerfile文件的目录路径,或者是git仓库的URL。
    dockerfile 备用Docker文件。
    args 添加构建镜像的参数,环境变量只能在构建过程中访问。 
image
    指定启动容器的镜像,可以是镜像仓库/标签或者镜像id(或者id的前一部分) 。如果镜像不存在,Compose将尝试从官方镜像仓库将其pull下来,如果你还指定了build,在这种情况下,它将使用指定的build选项构建它,并使用image指定的名字和标记对其进行标记。
container_name
    指定一个自定义容器名称,而不是生成的默认名称。由于Docker容器名称必须是唯一的,因此如果指定了自定义名称,则无法将服务扩展到多个容器。
volumes
    卷挂载路径设置。
command
    覆盖容器启动后默认执行的命令。
links
    链接到另一个服务中的容器。 
external_links
    链接到docker-compose.yml 外部的容器,甚至并非 Compose 管理的容器。
expose
    暴露端口,但不映射到宿主机,只被连接的服务访问。仅可以指定内部端口为参数
ports
    暴露端口信息。 常用的简单格式:使用宿主:容器 (HOST:CONTAINER)格式或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。
restart
    no是默认的重启策略,在任何情况下都不会重启容器。 指定为always时,容器总是重新启动。 如果退出代码指示出现故障错误,则on-failure将重新启动容器。
environment
    添加环境变量。
pid
    将PID模式设置为主机PID模式。
dns
    配置 DNS 服务器。
    
 
Compose的使用三步:
    使用 Dockerfile 自定义应用程序的环境,便于在任何地方复制它;
    使用 docker-compose.yml 定义构成的应用程序的服务,便于隔离环境中一起运行;
    运行 docker-compose up 命令启动并运行整个应用程序。