一点一点的积累,不要一口气吃一个大胖子
docker run -d --restart=always --privileged=true --name portainer -p 9010:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
docker network create my-network
docker run -d \
--name mysql \
--restart always \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 13306:3306 \
-v ./mysql/sql:/docker-entrypoint-initdb.d \
--health-cmd "mysqladmin ping -h localhost" \
--health-interval 5s \
--health-timeout 10s \
--health-retries 10 \
--health-start-period 15s \
--network my-network \
mysql:8.0.32 \
--default-authentication-plugin=mysql_native_password
1、安装docker
yum install <https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm>
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo <https://download.docker.com/linux/centos/docker-ce.repo>
yum install -y docker-ce
curl -L "<https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$>(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
安装docker
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
curl -fsSL <https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg> | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] <https://mirrors.aliyun.com/docker-ce/linux/ubuntu> $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt-get update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo apt-get install bash-completion
sudo curl -L <https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker> -o /etc/bash_completion.d/docker.sh
source /etc/bash_completion.d/docker.sh
安装dockr-compose
sudo curl -L <https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-`uname> -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
下载太慢,更换docker-compose镜像源
sudo curl -L "<https://get.daocloud.io/docker/compose/releases/download/2.26.0/docker-compose-$>(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
修改docker镜像源
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"<https://docker.m.daocloud.io>",
"<https://docker.imgdb.de>",
"<https://docker-0.unsee.tech>",
"<https://docker.hlmirror.com>",
"<https://docker.1ms.run>",
"<https://func.ink>",
"<https://lispy.org>",
"<https://docker.xiaogenban1993.com>"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
docker pull hello-world
2、检查docker和docker-compose是否安装成功
docker version
docker-compose --version
3、文件授权
chmod +x /usr/local/bin/docker-compose
4、启动docker
systemctl start docker
5、构建docker服务
docker-compose build
6、启动docker容器
docker-compose up -d
7、启动停止服务容器
停止全部容器docker-compose down
启动服务的容器docker-compose up ruoyi-mysql ruoyi-server ruoyi-nginx ruoyi-redis
停止服务的容器docker-compose stop ruoyi-mysql ruoyi-server ruoyi-nginx ruoyi-redis
8、Docker Compose常用命令
基本命令
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.后端怎么根据后缀启动相关的配置文件
spring boot profiles 实现多环境下配置切换 docker版 - ejiyuan - 博客园
一文带你实现SpringBoot多配置文件实现环境动态切换(prod、dev、test)_springboot dev prod-CSDN博客
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 命令启动并运行整个应用程序。