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

打印 上一主题 下一主题

主题 1909|帖子 1909|积分 5731

一、部署前端部门



  • 前端部门利用vue 2,通过nginx举行部署,首先从nginx安装开始
1.搜索并拉去Nginx镜像

  1. [root@localhost ~]# docker search nginx
  2. [root@localhost /]# docker pull nginx:latest
  3. latest: Pulling from library/nginx
  4. Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
  5. Status: Image is up to date for nginx:latest
  6. docker.io/library/nginx:latest
  7. [root@localhost /]# docker ps
复制代码
2.启动一个nginx,用于复制配置文件到宿主机

  1. [root@localhost /]# docker run -d -p 80:80 --restart=always nginx:latest
  2. c52a824e9245f4ebde4775629133d3370b4ee270baa65d2e2a8a2631579c9e9a
  3. [root@localhost /]# cd /home/
复制代码
  1. # -d 后台启动 -p 宿主机的80端口映射容器的80端口
  2. # --restart=always 伴随docker重启自动重启该容器
  3. # -p linux服务器端口:docker内部端口。映射
复制代码
3.创建Nginx配置文件目录

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


  • 创建挂载目录
  1. mkdir -p /home/nginx/{conf,html,logs}
复制代码
4.查察宿主机的目录

  1. [root@localhost ~]# tree /home/nginx/
  2. /home/nginx/
  3. ├── conf
  4. ├── html
  5. └── log
复制代码
5.配置复制到宿主机

容器中的nginx.conf文件和conf.d文件、html、logs文件夹复制到宿主机
  1. #将容器nginx.conf文件夹下内容复制到宿主机
  2. [root@localhost nginx]# docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/
  3. Successfully copied 2.56kB to /home/nginx/conf/
  4. #将容器conf.d文件夹下内容复制到宿主机
  5. [root@localhost conf]# docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/
  6. Successfully copied 3.58kB to /home/nginx/conf/
  7. #将容器中的html文件夹复制到宿主机
  8. [root@localhost nginx]# docker cp nginx:/usr/share/nginx/html /home/nginx/html
  9. Successfully copied 4.1kB to /home/nginx/html
复制代码


  • 复制完成后,停止刚刚启动的nginx,并删除容器
  1. [root@localhost html]# docker stop nginx
  2. nginx
  3. [root@localhost html]# docker rm nginx
  4. nginx
复制代码


  • 重新启动新的容器
    下面代码-v前面被处理惩罚过,可直接复制利用,\ 表现换下一行继续
    -d: 后台启动
    -p: 宿主机的80端口映射容器的80端口
    -v: 挂载宿主机文件或目录到容器
    –restart=always: 陪伴docker重启主动重启该容器
  1. [root@localhost html]# docker run \
  2. -p 80:80 \
  3. --name nginx \
  4. -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  5. -v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
  6. -v /home/nginx/html:/usr/share/nginx/html \
  7. -v /home/nginx/logs:/var/log/nginx/ \
  8. --restart=always \
  9. -d nginx
  10. a26f1a599eee1f5fe25e5cd8e0e2c8b9071ed97a0ffca821555cb3922fee5697
  11. [root@localhost html]# diocker ps -a
复制代码
查察挂载绑定
  1. [root@localhost html]# docker inspect nginx
复制代码
对应位置结果如下:
  1. "HostConfig": {
  2.             "Binds": [
  3.                 "/home/nginx/html:/usr/share/nginx/html",
  4.                 "/home/nginx/logs:/var/log/nginx/",
  5.                 "/home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf",
  6.                 "/home/nginx/conf/conf.d:/etc/nginx/conf.d"
  7.             ],
  8.             "ContainerIDFile": "",
  9.             "LogConfig": {
  10.                 "Type": "json-file",
  11.                 "Config": {}
  12.             },
复制代码
查察历程
  1. [root@localhost ~]# docker ps -a
  2. CONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS         PORTS                                                  NAMES
  3. d19f05d93ff7   nginx       "/docker-entrypoint.…"   30 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp                      nginx
  4. 859d2a023c54   redis       "docker-entrypoint.s…"   2 hours ago      Up 2 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis
  5. e536f06efb83   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
进入容器查察
  1. [root@localhost ~]# docker exec -it nginx /bin/bash
  2. root@d19f05d93ff7:/# cd /etc/nginx/
  3. root@d19f05d93ff7:/etc/nginx# ls
  4. conf.d        fastcgi_params        mime.types  modules  nginx.conf  scgi_params  uwsgi_params
  5. root@d19f05d93ff7:/etc/nginx# exit
  6. exit
  7. [root@localhost ~]#
复制代码
访问页面


  • 修改nginx.conf文件,找到进入刚刚挂载宿主机位置的配置文件
    vim /home/nginx/conf/nginx.conf
  1.   #gzip  on;
  2.     #默认文件中无server块,新增自定义server块,注释掉include /etc/nginx/conf.d/*.conf;
  3.     #include /etc/nginx/conf.d/*.conf;
  4.         server {
  5.         listen       80;
  6.         server_name  192.168.116.135;
  7.         #charset koi8-r;
  8.         #access_log  logs/host.access.log  main;
  9.         location / {
  10.             root   /usr/share/nginx/html; #注意此处改为容器中html地址,改为宿主机找不到html
  11.             index  index.html index.htm;
  12.             #去除vue访问路径中#
  13.             if (!-e $request_filename) {
  14.                 rewrite ^(.*)$ /index.html?s=$1 last;
  15.                 break;
  16.                 }
  17.           }
  18.         }
复制代码

  • 访问
    访问的页面放到挂载的目录(宿主机,如:/home/nginx/html),不用进入容器,通过xftp等上传编辑好的文件

二、部署准备后端环境

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

idea打包,准备上传jar包


2.linux中创建目录

  1. mkdir -p /home/java-core
复制代码
将jar上传到目录
在和jar包在相同目录下创建Dockerfile
  1. [root@localhost ~]# sudo vim Dockerfile
复制代码
编辑内容如下:
  1. #拉取jdk8作为基础镜像
  2. FROM java:8
  3. #作者
  4. MAINTAINER name
  5. #添加jar到镜像并命名为juror.jar
  6. ADD juror-0.0.1-SNAPSHOT.jar juror.jar
  7. #镜像启动后暴露的端口
  8. EXPOSE 8300
  9. # jar运行命令,参数使用逗号隔开
  10. ENTRYPOINT ["java","-jar","juror.jar"]
复制代码
3,然后利用命令打包

若build失败,大概是网络不通,更换国内docker镜像。
  1. docker build -t juror .
复制代码
user表现镜像名称
最后的(点.)表现Dockerfile在当前目录
打包完成后利用docker images查察镜像
4.启动

利用docker run命令创建并运行容器:
此处的端口映射为前端访问后端的接口端口,背面会在nginx中配置路径匹配转发访问接口
  1. docker run -d --name juror -p 8300:8300 juror
复制代码
命令功能docker run创建并启动容器-d后台运行容器,并返回容器ID–name指定容器名称jurorjuror需要启动的镜像(名称+版本)不指定版本默认最新版本:符号左边为宿主机,右边为容器空间。此为端口映射 5. 在server块中新增location块,监听端口如上,不删除。

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


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

docker logs -f -t juror
jar日志启动乐成,查察容器:
docker ps
部署完成后如需要开机自启,随着docker启动而启动,命令:
  1. [root@localhost ~]# docker update --restart=always 容器
复制代码
三、若要举行挂载

修改Dockerfile文件
  1. sudo vim Dockerfile
复制代码
修改后内容如下(docker中给jar存放一个目录,方便挂载到宿主机):
拉取jdk8作为基础镜像

FROM java:8
  1. # 作者
  2. MAINTAINER name
  3. # 添加jar到镜像并命名为juror.jar,下面为在宿主机中目录
  4. ADD juror-0.0.1-SNAPSHOT.jar /home/java-core/juror.jar
  5. # 镜像启动后暴露的端口
  6. EXPOSE 8300
  7. # jar运行命令,参数使用逗号隔开,下位容器中需要目录
  8. ENTRYPOINT ["java","-jar","/home/java-core/juror.jar"]
复制代码
在宿主机中创建挂载目录
  1. [root@localhost java-core]# mkdir -p app
  2. [root@localhost java-core]# ls
  3. app  juror-0.0.1-SNAPSHOT.jar  Dockerfile
复制代码
启动容器
  1. 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包,然后重启容器即可实现更新,省略了每次更新删除打包创建等过程。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表