当前位置:首页 » 《随便一记》 » 正文

docker安装nginx,docker部署vue前端,以及docker部署java的jar部署

13 人参与  2024年10月23日 11:20  分类 : 《随便一记》  评论

点击全文阅读


一、部署前端部分

前端部分使用vue 2,通过nginx进行部署,首先从nginx安装开始

1.搜索并拉去Nginx镜像

[root@localhost ~]# docker search nginx[root@localhost /]# docker pull nginx:latestlatest: Pulling from library/nginxDigest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31Status: Image is up to date for nginx:latestdocker.io/library/nginx:latest[root@localhost /]# docker ps

2.启动一个nginx,用于复制配置文件到宿主机

[root@localhost /]# docker run -d -p 80:80 --restart=always nginx:latestc52a824e9245f4ebde4775629133d3370b4ee270baa65d2e2a8a2631579c9e9a[root@localhost /]# cd /home/
# -d 后台启动 -p 宿主机的80端口映射容器的80端口# --restart=always 伴随docker重启自动重启该容器# -p linux服务器端口:docker内部端口。映射

3.创建Nginx配置文件目录

启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf)

创建挂载目录
mkdir -p /home/nginx/{conf,html,logs}

4.查看宿主机的目录

[root@localhost ~]# tree /home/nginx//home/nginx/├── conf├── html└── log

5.配置复制到宿主机

容器中的nginx.conf文件和conf.d文件、html、logs文件夹复制到宿主机

#将容器nginx.conf文件夹下内容复制到宿主机[root@localhost nginx]# docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/Successfully copied 2.56kB to /home/nginx/conf/#将容器conf.d文件夹下内容复制到宿主机[root@localhost conf]# docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/Successfully copied 3.58kB to /home/nginx/conf/#将容器中的html文件夹复制到宿主机[root@localhost nginx]# docker cp nginx:/usr/share/nginx/html /home/nginx/htmlSuccessfully copied 4.1kB to /home/nginx/html
复制完成后,停止刚刚启动的nginx,并删除容器
[root@localhost html]# docker stop nginxnginx[root@localhost html]# docker rm nginxnginx
重新启动新的容器
下面代码-v前面被处理过,可直接复制使用,\ 表示换下一行继续
-d: 后台启动
-p: 宿主机的80端口映射容器的80端口
-v: 挂载宿主机文件或目录到容器
–restart=always: 伴随docker重启自动重启该容器
[root@localhost html]# docker run \-p 80:80 \--name nginx \-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \-v /home/nginx/html:/usr/share/nginx/html \-v /home/nginx/logs:/var/log/nginx/ \--restart=always \-d nginxa26f1a599eee1f5fe25e5cd8e0e2c8b9071ed97a0ffca821555cb3922fee5697[root@localhost html]# diocker ps -a

查看挂载绑定

[root@localhost html]# docker inspect nginx

对应位置结果如下:

 "HostConfig": {            "Binds": [                "/home/nginx/html:/usr/share/nginx/html",                "/home/nginx/logs:/var/log/nginx/",                "/home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf",                "/home/nginx/conf/conf.d:/etc/nginx/conf.d"            ],            "ContainerIDFile": "",            "LogConfig": {                "Type": "json-file",                "Config": {}            },

查看进程

[root@localhost ~]# docker ps -aCONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS         PORTS                                                  NAMESd19f05d93ff7   nginx       "/docker-entrypoint.…"   30 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp                      nginx859d2a023c54   redis       "docker-entrypoint.s…"   2 hours ago      Up 2 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redise536f06efb83   mysql:5.7   "docker-entrypoint.s…"   4 days ago       Up 2 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

容器运行后,需要再重新运行加载配置文件,需要stop容器,并删除容器,镜像如需重新定义创建在执行rmi参数删除

关闭容器

[root@localhost ~]# docker stop nginx

删除容器

[root@localhost ~]# docker rm nginx

进入容器查看

[root@localhost ~]# docker exec -it nginx /bin/bashroot@d19f05d93ff7:/# cd /etc/nginx/root@d19f05d93ff7:/etc/nginx# lsconf.dfastcgi_paramsmime.types  modules  nginx.conf  scgi_params  uwsgi_paramsroot@d19f05d93ff7:/etc/nginx# exitexit[root@localhost ~]# 

访问页面

修改nginx.conf文件,找到进入刚刚挂载宿主机位置的配置文件
vim /home/nginx/conf/nginx.conf
  #gzip  on;    #默认文件中无server块,新增自定义server块,注释掉include /etc/nginx/conf.d/*.conf;    #include /etc/nginx/conf.d/*.conf;        server {        listen       80;        server_name  192.168.116.135;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            root   /usr/share/nginx/html; #注意此处改为容器中html地址,改为宿主机找不到html            index  index.html index.htm;            #去除vue访问路径中#            if (!-e $request_filename) {                rewrite ^(.*)$ /index.html?s=$1 last;                break;                }          }        }
访问
访问的页面放到挂载的目录(宿主机,如:/home/nginx/html),不用进入容器,通过xftp等上传编辑好的文件
在这里插入图片描述

二、部署准备后端环境

定义路径转发,后台访问部署java,若使用redis等,需要进行docker安装,同时还有数据库也需要安装,这两个的安装比较容易,基本下一步,再设置好开机启动随着docker启动而启动即可。

1.部署java环境

idea打包,准备上传jar包
在这里插入图片描述

在这里插入图片描述

2.linux中创建目录

mkdir -p /home/java-core

将jar上传到目录

在和jar包在相同目录下创建Dockerfile

[root@localhost ~]# sudo vim Dockerfile

编辑内容如下:

#拉取jdk8作为基础镜像FROM java:8#作者MAINTAINER name#添加jar到镜像并命名为juror.jarADD juror-0.0.1-SNAPSHOT.jar juror.jar#镜像启动后暴露的端口EXPOSE 8300# jar运行命令,参数使用逗号隔开ENTRYPOINT ["java","-jar","juror.jar"]

3,然后使用命令打包

若build失败,大概是网络不通,更换国内docker镜像。

docker build -t juror .

user表示镜像名称
最后的(点.)表示Dockerfile在当前目录
打包完成后使用docker images查看镜像

4.启动

使用docker run命令创建并运行容器:
此处的端口映射为前端访问后端的接口端口,后面会在nginx中配置路径匹配转发访问接口

docker run -d --name juror -p 8300:8300 juror
命令功能
docker run创建并启动容器
-d后台运行容器,并返回容器ID
–name指定容器名称
jurorjuror需要启动的镜像(名称+版本)不指定版本默认最新版本
:符号左边为宿主机,右边为容器空间。此为端口映射

5. 在server块中新增location块,监听端口如上,不删除。

 location /juror-api {                rewrite ^.+juror-api/?(.*)$ /$1 break;  #去掉/juror-api前缀                proxy_pass  http://192.168.116.135:8300; #转发代理,java后端地址和端口访问                proxy_redirect off;     #关闭重定向                proxy_set_header  Host $host;  #携带host请求头                proxy_set_header  X-Real-IP $remote_addr;   #自定义请求头X-Real-IP将客户真实ip转发给服务器                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;  #用户访问cdn服务器转发nginx用户真实ip给后台                }

6.访问地址,在java部署完成情况下

在这里插入图片描述

7,启动完成,查看启动日志:

docker logs -f -t juror
jar日志启动成功,查看容器:
docker ps

部署完成后如需要开机自启,随着docker启动而启动,命令:

[root@localhost ~]# docker update --restart=always 容器

三、若要进行挂载

修改Dockerfile文件

sudo vim Dockerfile

修改后内容如下(docker中给jar存放一个目录,方便挂载到宿主机):

拉取jdk8作为基础镜像

FROM java:8

# 作者MAINTAINER name# 添加jar到镜像并命名为juror.jar,下面为在宿主机中目录ADD juror-0.0.1-SNAPSHOT.jar /home/java-core/juror.jar# 镜像启动后暴露的端口EXPOSE 8300# jar运行命令,参数使用逗号隔开,下位容器中需要目录ENTRYPOINT ["java","-jar","/home/java-core/juror.jar"]

在宿主机中创建挂载目录

[root@localhost java-core]# mkdir -p app[root@localhost java-core]# lsapp  juror-0.0.1-SNAPSHOT.jar  Dockerfile

启动容器

docker run -d --name juror -e SPRING_PROFILES_ACTIVE="prod" -p 8300:8300 -v /home/java-core/app:/app juror
参数作用
- v/home/java-core/app此处为宿主机jar所在目录,/app为挂载到容器目录下
-eSPRING_PROFILES_ACTIVE="prod"为启动application-prod.yml环境

这样的方式启动完成之后,更新服务时只需要更换宿主机/home/java-core/app目录下的jar包,然后重启容器即可实现更新,省略了每次更新删除打包创建等过程。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/176036.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1