项目部署体验

docker部署踩的坑

前提

你需要拥有一个远程服务器或者是本地虚拟机

安装docker

Centos安装docker Install Docker Engine on CentOS | Docker Docs

部署后端

部署mysql

docker run -d -v 数据卷名称:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --restart always --name 镜像名称 mysql:8.0

部署redis

docker run -d -p 6379:6379 -v 数据卷名称:/data --restart always --name 镜像名称 redis:7.0 redis-server --appendonly yes

部署jar

docker run -d  -v 数据卷名称:/usera/java  -p 项目端口:项目端口  --restart  always --name 镜像名称  --network 网络名称  java:openjdk-8u111 java -jar /usera/java/zl-admin-1.0-SNAPSHOT.jar "yml配置文件需要需要修改的地方--spring.datasource.url= " 

这样部署并不能正常运行jar,原因:jar无法与mysql和redis建立连接通信。

需要建立网桥,将redis和mysql,jar处于同一个网桥

创建网桥

docker network create 网络名

将镜像加入到网桥中

docker network connect 网桥名 镜像名称

查看网桥信息

docker network inspect 网桥名

部署前端

对于不知道nginx.conf配置的我极其痛苦

准备:需要将自己的前端项目打包比如vue执行(npm run build)进行打包生成dist文件,传输到自己的服务器上去,可以在本地书写nginx.conf配置文件

docker run -d -p 项目端口:80 -v  dist文件地址:/usr/share/nginx/html -v nginx.conf地址:/etc/nginx/nginx.conf  --restart always --name vue-admin  nginx:latest

天真的我以为这就结束战斗了,当我进行测试发现访问后端接口404.404表示地址不存在的状态码。问题直接锁定nginx转发地址错误。

经过了解nginx,知道nginx反向代理

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
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;
    server {
        listen 80;
        server_name 你的服务器地址;
        charset utf-8; 

         location / {
          root /usr/share/nginx/html;
          index index.html index.htm;
          try_files $uri $uri/ /index.html; 
         }
         #请求地址中含有/prod-api/的url将其转发
        location /prod-api/ {
            proxy_pass http://你的服务器地址和端口/;  #注意端口后面这个斜杠,作用将/prod-api/代替(即去除前缀)
            add_header backendCode $upstream_status; 
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Istoken $http_Istoken;
            proxy_set_header Token $http_Token;
        }
    }
}

注意:修改nginx.conf一定要重新加载nginx.

docker exec -it nginx镜像名称 nginx -s reload 

进阶:dockerFile

posted @ 2023-12-22 16:50  zL66  阅读(23)  评论(0编辑  收藏  举报