Centos7-8下docker部署Springboot+vue前后端分离项目含nginx配置说明

  • docker部署说明
  • 安装docker
  • docker中安装nginx
  • 将nginx的配置文件目录挂载到本地
  • 部署前端项目
  • 部署后端项目
  • 后记


docker部署说明

初次接触docker部署前后端项目,各种踩坑。经过查询大量资料及部署的方式。终于总结出一套适合自己的部署方式。项目后端采用镜像的方式启动,前端则和nginx一起部署。

安装docker

首先我们需要在服务器安装docker::

  1. 使用官方安装脚本自动安装 :
    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  2. 也可以使用国内 daocloud 一键安装命令安装:
    curl -sSL https://get.daocloud.io/docker | sh
  3. Docker基础命令:
    启动docker
sudo service docker start

停止docker

sudo service docker stop

重启docker

sudo service docker restart

查看docker启动的服务

docker ps

在docker nginx容器里部署两个前端项目_java

docker中安装nginx

docker安装成功后,就可以部署项目了。我们先在docker中拉取nginx的镜像。

查看可用版本

docker search nginx

取最新版的 Nginx 镜像

docker pull nginx:latest

查看本地镜像

docker images

在docker nginx容器里部署两个前端项目_Oracle_02

运行容器

docker run --name nginx-test -p 8080:80 -d nginx
参数说明:
–name nginx-test:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。

安装完成

打开浏览器输入ip+端口:
出现以下页面说明安装成功

在docker nginx容器里部署两个前端项目_docker_03

将nginx的配置文件目录挂载到本地

创建挂载目录

文件可根据实际情况选择合适的目录创建
文件结构建议相同,后续启动命令有相关操作

在docker nginx容器里部署两个前端项目_Oracle_04


进入容器

docker exec -it cd11b894a672 /bin/bashcd11b894a672 是nginx的镜像id
可以通过命令:docker ps 查看

在docker nginx容器里部署两个前端项目_Oracle_05


退出容器

找到我们nginx的目录结构后,就可以退出容器
执行 exit

复制镜像文件

docker cp -a cd11b894a672:/etc/nginx/conf.d/ /home/docker/nginx/conf.d
docker cp -a cd11b894a672:/etc/nginx/nginx.conf

nginx.conf的文件内容

user  nginx;
worker_processes  1;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    #gzip  on;
 
    include /etc/nginx/conf.d/*.conf;
}

default.conf的文件内容

server {
    listen       80;
    server_name  localhost;
  
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
  
    location / {  
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        #autoindex  on;
        #try_files $uri /index/index/page.html;
        #try_files $uri /index/map/page.html;
    }  
  
    #error_page  404              /404.html;
  
    # redirect server error pages to the static page /50x.html
    #  
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
  
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #  
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}  
  
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
    #  
    #location ~ \.php$ {  
    #    root           html;  
    #    fastcgi_pass   127.0.0.1:9000;  
    #    fastcgi_index  index.php;  
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
    #    include        fastcgi_params;  
    #}  
  
    # deny access to .htaccess files, if Apache's document root  
    # concurs with nginx's one  
    #  
    #location ~ /\.ht {  
    #    deny  all;  
    #}  
}

部署前端项目

将打包的前端项目复制到目录下

在docker nginx容器里部署两个前端项目_https_06

前端打包的项目是dist文件。只需要将dist内的文件复制出来即可

关闭之前启动的nginx

docker stop cd11b894a672
docker rm cd11b894a672

重新启动nginx

docker run --name nginx -p 8080:80 -v /home/docker/nginx/html:/usr/share/nginx/html -v /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /home/docker/nginx/logs:/var/log/nginx -v /home/docker/nginx/conf.d:/etc/nginx/conf.d -d nginx:latest

打开浏览器访问

如果弹出我们自己打包的前端项目首页。说明部署成功了。

部署后端项目

服务器创建Dockerfile文件

FROM java:8
VOLUME /tmp
ADD inspection.jar app.jar
# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
# 暴露17080端口
EXPOSE 17080
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]

后端打包jar放在同级目录

在docker nginx容器里部署两个前端项目_java_07

打包镜像

docker build -t inspection:show .

查看镜像

docker images

启动镜像

docker run -p 17080:17080 -d -t inspection:show

后记

其他的想要通过镜像的方式一样可以,如redis、mysql。
如果有初学者有疑问的可以留言。一起进步