1.创建虚拟机
可以参考B站:VMware 创建 CentOS 虚拟机_哔哩哔哩_bilibili
这个博主
下载地址:centos-vault-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云
2.安装docker
下载地址:Index of linux/static/stable/
选择X86_64的可以选择
下载然后放到/home路径下
切换到home路径下
cd /home/
1.安装docker
# 在home目录下解压
tar -xzvf docker-24.0.7.tgz
# 给docker执行文件赋予可执行权限
chmod 755 -R docker
# 复制docker到/usr/bin/目录下,使docker命令可以执行
cp docker/* /usr/bin/
# 清理解压后的不需要的文件
rm -rf docker docker-24.0.7.tgz
2.配置 docker 服务
# 创建docker.service文件
cd /etc/systemd/system/
touch docker.service
vi docker.service
docker.service配置文件
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=8
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
a插入,复制后Esc 然后shift+:然后输入wq保存退出
赋予 docker 服务配置文件的执行权限
sudo chmod +x /etc/systemd/system/docker.service
3.注册阿里云网站:
首先访问阿里云网站:
注册一个账号。
1.开通镜像服务
登录后再次访问 阿里云-计算,为了无法计算的价值; 在首页的产品中,找到阿里云的容器镜像服务:
2.配置镜像加速
配置的文档说明:
# 创建目录
mkdir -p /etc/docker
# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["自己的阿里云加速"]
}
EOF
# 重新加载配置
systemctl daemon-reload
# 启用docker服务开机自启动
systemctl enable docker.service
# 重启Docker
systemctl restart docker
# 检查docker服务状态
systemctl status docker
# 查看安装的docker版本
docker -v
出现这样就安装完成docker了
3.安装docker compos
1.到gitHub上下载
docker compos v2.21.0路径如下:Release v2.21.0 · docker/compose · GitHub
2.然后复制到/home路径下:
cd /home/
3.然后赋予可执行权限:
chmod +x docker-compose-linux-x86_64
4.移动到 /usr/local/bin
并重命名:
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
5.验证安装:
docker-compose version
出现:
说明成功安装了
4.安装必要镜像
1.将下面文件传到root目录下
然后在root路径下安装镜像
docker load -i mysql.tar
docker load -i nginx.tar
docker load -i jdk.tar
查看镜像:
docker images
出现说明成功;
5.构建结构
其中conf放的是数据库的格式:
[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
1.然后测试数据库镜像是否成功:
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
用
docker ps
出现
说明成功;
2.创建nginx目录
等会部署需要用到
6.数据库
1.用数据卷的方法挂载数据库到本地
现删除开始创建的mysql容器
docker rm -f mysql
创建并运行新mysql容器,挂载本地目录
docker run -d \
--name mysql \
-p 3308:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-v ./mysql/data:/var/lib/mysql \
-v ./mysql/conf:/etc/mysql/conf.d \
-v ./mysql/init:/docker-entrypoint-initdb.d \
mysql
2.连接数据库
不知道Ip可以用查看
ip addr
然后
就有我们上传上去的表
7.部署redis
1.上传tar包
创建数据结构:
mkdir -p redis/{conf,data}
编辑配置文件:
vi redis/conf/redis.conf
类容:
# 允许任何主机访问redis
# bind 127.0.0.1
# 禁用保护模式
protected-mode no
# 端口6379(默认)
port 6379
# 不允许守护进程模式(设置允许与参数-d冲突,容器无法启动)
daemonize no
# 访问密码
requirepass 123456
部署:
docker run --name myredis -d \
-p 6379:6379 \
-v /root/redis/conf:/etc/redis \
-v /root/redis/data:/data \
redis \
redis-server /etc/redis/redis.conf
用客户端连接工具测试:
7.项目打包:
1.准备工作
修改配置
打包:
上传到root目录下;
其中Dockerfile启动文件为:
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY sky-server.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
2.创建一个网络:
docker network create sky
1.构建项目镜像,不指定tag,则默认为latest
docker build -t sky-server .
查看镜像:
docker images
3.创建并运行容器
docker run -d --name sky-server --network sky -p 8024:8024 sky-server
等前端部署完毕后,一起联调
8.部署前端:
把html的文件传入Luxn中
编写配置文件:nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# WebSocket支持
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream backend_servers {
server sky-server:8024;
}
server {
listen 8042;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html; # 替换if判断更高效
}
# 关键修改:精确匹配登录接口
location = /api/employee/login {
proxy_pass http://backend_servers/admin/employee/login;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
}
# 通用API规则(保留其他接口支持)
location /api/ {
proxy_pass http://backend_servers/admin/;
proxy_set_header Host $host;
}
# 用户端API
location /user/ {
proxy_pass http://backend_servers/user/;
proxy_set_header Host $host;
}
# WebSocket支持
location /ws/ {
proxy_pass http://backend_servers/ws/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
error_page 404 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
部署命令:
docker run -d \
--name nginx \
-p 8042:8042 \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/logs:/var/log/nginx \
--network sky \
nginx
9.用docker compos部署:
1.删除已经存在的镜像
删除旧容器
docker rm -f $(docker ps -qa)
删除sky镜像
docker rmi sky
# 4.清空MySQL数据
rm -rf mysql/data
删除原有创建的sky网络
docker network rm sky
2.上传上传docker-compose.yml
配置文件为:
version: '1'
services:
mysql:
image: mysql
container_name: mysql
restart: always
ports:
- "3308:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: "123456"
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/init:/docker-entrypoint-initdb.d
networks:
- sky
redis:
image: redis
container_name: redis
restart: always
ports:
- "6379:6379"
volumes:
- /root/redis/conf:/etc/redis
- /root/redis/data:/data
command: redis-server /etc/redis/redis.conf
networks:
- sky
sky-server:
build: .
container_name: sky-server
restart: always
ports:
- "8024:8024"
networks:
- sky
depends_on:
- mysql
- redis
nginx:
image: nginx
container_name: nginx
restart: always
ports:
- "8042:8042"
volumes:
- /root/nginx/html:/usr/share/nginx/html
- /root/nginx/nginx.conf:/etc/nginx/nginx.conf
- /root/nginx/logs:/var/log/nginx
networks:
- sky
depends_on:
- sky-server
networks:
sky:
driver: bridge
3.运行:
docker-compose up -d
出现:
说明成功
10,测试
点击登录:
看其他功能:
正常,去用户端:
说明成功