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

一、部署前端部分

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

1.搜索并拉去Nginx镜像

复制代码
[root@localhost ~]# docker search nginx
[root@localhost /]# docker pull nginx:latest
latest: Pulling from library/nginx
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Image is up to date for nginx:latest
docker.io/library/nginx:latest
[root@localhost /]# docker ps

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

复制代码
[root@localhost /]# docker run -d -p 80:80 --restart=always nginx:latest
c52a824e9245f4ebde4775629133d3370b4ee270baa65d2e2a8a2631579c9e9a
[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/html
Successfully copied 4.1kB to /home/nginx/html
  • 复制完成后,停止刚刚启动的nginx,并删除容器

    root@localhost html\]# docker stop nginx nginx \[root@localhost html\]# docker rm nginx nginx

    下面代码-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 nginx a26f1a599eee1f5fe25e5cd8e0e2c8b9071ed97a0ffca821555cb3922fee5697 \[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 -a
CONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS         PORTS                                                  NAMES
d19f05d93ff7   nginx       "/docker-entrypoint...."   30 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp                      nginx
859d2a023c54   redis       "docker-entrypoint.s..."   2 hours ago      Up 2 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis
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 进入容器查看 [root@localhost ~]# docker exec -it nginx /bin/bash root@d19f05d93ff7:/# cd /etc/nginx/ root@d19f05d93ff7:/etc/nginx# ls conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params root@d19f05d93ff7:/etc/nginx# exit exit [root@localhost ~]# #### 访问页面 1. 修改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; } } } 2. 访问 访问的页面放到挂载的目录(宿主机,如:/home/nginx/html),不用进入容器,通过xftp等上传编辑好的文件 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ed24a82cfe7b452ea15e32ef4d4edeb0.jpeg) ### 二、部署准备后端环境 定义路径转发,后台访问部署java,若使用redis等,需要进行docker安装,同时还有数据库也需要安装,这两个的安装比较容易,基本下一步,再设置好开机启动随着docker启动而启动即可。 #### 1.部署java环境 idea打包,准备上传jar包 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b388d77aabb04a2088f77fc276b24cb6.jpeg) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5b8cf6a4ef31422991dbb7f93ed5f428.jpeg) #### 2.linux中创建目录 mkdir -p /home/java-core 将jar上传到目录 在和jar包在相同目录下创建Dockerfile [root@localhost ~]# sudo vim Dockerfile 编辑内容如下: #拉取jdk8作为基础镜像 FROM java:8 #作者 MAINTAINER name #添加jar到镜像并命名为juror.jar ADD 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 指定容器名称 juror juror需要启动的镜像(名称+版本)不指定版本默认最新版本 : 符号左边为宿主机,右边为容器空间。此为端口映射 #### 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部署完成情况下 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/262e8b9fbdbd4072b9d964b1b67661e2.jpeg) #### 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]# ls app 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为挂载到容器目录下 -e SPRING_PROFILES_ACTIVE="prod"为启动application-prod.yml环境 这样的方式启动完成之后,更新服务时只需要更换宿主机/home/java-core/app目录下的jar包,然后重启容器即可实现更新,省略了每次更新删除打包创建等过程。

相关推荐
木卯彳亍18 分钟前
番外-linux系统运行.net framework 4.0的项目
linux·docker·.net
前端 贾公子2 小时前
pnpm 的 resolution-mode 配置 ( pnpm 的版本解析)
前端
Dcs2 小时前
用不到 1000 行 Go 实现 BaaS,Pennybase 是怎么做到的?
java
伍哥的传说2 小时前
React 自定义Hook——页面或元素滚动到底部监听 Hook
前端·react.js·前端框架
退役小学生呀3 小时前
十一、K8s细粒度权限管理RBAC
linux·docker·云原生·容器·kubernetes·k8s
Cyanto3 小时前
Spring注解IoC与JUnit整合实战
java·开发语言·spring·mybatis
qq_433888933 小时前
Junit多线程的坑
java·spring·junit
gadiaola3 小时前
【SSM面试篇】Spring、SpringMVC、SpringBoot、Mybatis高频八股汇总
java·spring boot·spring·面试·mybatis
写不出来就跑路3 小时前
WebClient与HTTPInterface远程调用对比
java·开发语言·后端·spring·springboot
Cyanto4 小时前
深入MyBatis:CRUD操作与高级查询实战
java·数据库·mybatis