docker部署java保姆级教程

以CentOS 7为例 先安装docker
为了可视化管理容器,可以用docker先部署portainer 镜像 portainer/portainer-ce:latest
可以找下教程,这不多叙述了

Docker

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

然后安装 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

Redis

docker run --network=host --name redis-sh -e TZ=Asia/Shanghai -d redis

Nginx(建议使用稳定版本)

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 首先将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]\.";

java

首先创建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;
     }

到这里就大功告成了

如果过程中有什么问题的都可以私信我

你可能感兴趣的:(docker,java,容器,vue)