以CentOS 7为例 先安装docker
为了可视化管理容器,可以用docker先部署portainer 镜像 portainer/portainer-ce:latest
可以找下教程,这不多叙述了
yum update -y
# 首先安装一些必要的包:
yum install -y yum-utils device-mapper-persistent-data lvm2
#然后添加 Docker 仓库:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#如果报错 yum-config-manager:找不到命令 执行以下命令
yum -y install yum-utils
#安装docker
yum install docker-ce
# 测试是否安装成功
docker --version
#安装后 启动docker
systemctl start docker
然后安装 mysql 版本可以自己改 这里用的是 5.7
先开启一次容器,为了把配置文件copy出来
docker run \
--name mysql-sh \
--network=host \ #容器的网络配置与主机一样 既允许使用localhost访问容器
-e MYSQL_ROOT_PASSWORD=root \ #设置密码
-e TZ=Asia/Shanghai \ #修改时区
--restart=always \ # 在容器退出时总是重启容器
-d mysql:5.7 # 镜像版本
把配置文件 复制到本地 ym/mysql/config/ 自己定义
docker cp mysql-sh:/etc/my.cnf /ym/mysql/config/
然后停止删除容器
配置文件复制下来需要添加下配置
在my.cnf配置文件中[mysqlId]中加入lower_case_table_names=1 忽略大小写敏感,因为mysql在linux下默认是区分大小写的
再部署 如果需要映射 日志文件 已可以继续添加
docker run \
--name mysql-sh \
-v /ym/mysql/config/my.cnf:/etc/my.cnf \ #映射本地配置文件
-v /ym/mysql/data:/var/lib/mysql \ #映射数据库数据
--network=host \
-e MYSQL_ROOT_PASSWORD=root \
-e TZ=Asia/Shanghai \
--restart=always \
-d mysql:5.7
开启后使用本地的工具连接,看是否连接上,如果不行,可以看看防火墙有没有开放3306端口,或者mysql对外的权限是否正常,可以参考 https://blog.csdn.net/qq_43060570/article/details/131833677
docker run --network=host --name redis-sh -e TZ=Asia/Shanghai -d redis
docker run -d \
--name nginx-server \
--network=host \
-v /ym/nginx/conf.d:/etc/nginx/conf.d \ # nginx配置文件
-v /ym/nginx/logs:/var/log/nginx \
-v /ym/nginx/html:/usr/share/nginx/html \
nginx:1.24.0
部署vue 首先将vue项目打包 生成dist文件夹
然后将dist里全部内容复制到nginx的html下 上面映射的(/ym/nginx/html)
然后修改nginx的配置文件
default.conf
正常是不用修改的,配置文件默认就是这个 如果不同就修改为下面的
server {
listen 80;
server_name localhost ;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
然后也是在server下 开启nginx压缩
gzip on;
#不压缩临界值,大于1K的才压缩,一般不用改
gzip_min_length 1k;
#buffer,就是,嗯,算了不解释了,不用改
gzip_buffers 4 16k;
#用了反向代理的话,末端通信是HTTP/1.0,默认是HTTP/1.1
#gzip_http_version 1.0;
#压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧
gzip_comp_level 2;
#进行压缩的文件类型,缺啥补啥就行了,JavaScript有两种写法,最好都写上吧,总有人抱怨js文件没有压缩,其实多写一种格式application/javascript 就行了
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
#跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
gzip_vary off;
#IE6对Gzip不怎么友好,不给它Gzip了
gzip_disable "MSIE [1-6]\.";
首先创建Dockerfile 文件
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 这个是idea生成的 用于远程调用的配置,idea里也要配置下,只用于测试,正式环境别用喔,idea具体怎么配置这里就不叙述了
vim Dockerfile
# 文件中添加以下内容
FROM openjdk:11 #用什么为基础镜像可以自行选择
ADD xxx.jar xxx.jar
EXPOSE 8080
ENV TZ=Asia/Shanghai
CMD java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar xxx.jar
#保存文件
#构建镜像(在文件当前目录执行命令)
docker build -t 镜像名 .
#构建成功后运行镜像
docker run --network=host --name 容器名 -e TZ=Asia/Shanghai -d 镜像名
在nginx中添加对后端的过滤
#所要匹配的路径
location /xxx {
proxy_pass http://127.0.0.1:8080/xxx;
proxy_set_header Host 127.0.0.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
到这里就大功告成了
如果过程中有什么问题的都可以私信我