项目部署(Docker容器方式)

项目部署(Docker容器方式)

Docker 部署后端项目

  • 切换开发环境。开发环境:application.dev.yml,生产环境:application.prod.yml。配置文件application.yml设置:

    spring:
      profile:
        active: prod
    
  • 生产环境涉及到的网络地址ip,都改成部署Docker时的容器名。之后可以使用docker network build [网关]创建网关,然后使用docker network connect [网关] [容器名] --alias [容器网络别名(设置为容器名最好)]Docker在容器网络中提供了内置的DNS解析服务,可以解析网络别名。

  • 如果没有使用个人的依赖包,那么后端项目可以在构建镜像时打包。那么需要在构建镜像时,把maven工具一起构建进去,例如:

    FROM maven:3.5-jdk-8-alpine as builder
    
    # Copy local code to the container image.
    WORKDIR /app     #指定/app是容器内的工作目录
    COPY pom.xml .   #将与Dockerfile同级的 pom.xml 拷贝到 /app目录下
    COPY src ./src   #将src源码目录 拷贝到 /app/src目录下
    
    # Build a release artifact
    RUN mvn package -DskipTests
    
    # Run the web service on container startup.
    # 运行java项目,参数是spring.profiles.active=prod
    CMD ["java","-jar","/app/target/yuapi-backend-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]
    
  • 如果使用了个人的依赖包,最好提前打包,这样就不用在Dockerfile里面指定。Dockerfile如下所示:

    #在这个示例中,Dockerfile与api-interface-0.0.1-SNAPSHOT.jar同级
    FROM java:openjdk-8-jdk-alpine
    
    # Copy local code to the container image.
    WORKDIR /app/api-interface
    #将与Dockerfile同级的api-interface-0.0.1-SNAPSHOT.jar 拷贝到 当前工作目录:/app/api-interface
    COPY ./api-interface-0.0.1-SNAPSHOT.jar . 
    
    EXPOSE 8123
    # Run the web service on container startup.
    CMD ["java","-jar","/app/api-interface/api-interface-0.0.1-SNAPSHOT.jar"]
    
  • 构建镜像

    docker build -t [镜像名]:[tag]
    
  • 运行容器

    docker run --name [容器名] -d -p [端口映射] [镜像名]:[tag]
    

Docker部署前端项目

  • 利用环境运行变量,修改前端请求地址

     baseURL: process.env.NODE_ENV === 'production'? 'api-gateway:8090':'http://localhost:8090'
    
  • 使用build工具打包前端项目(得到dist目录)

  • 准备nginx.conf

    server {
        listen 80;
    
       # gzip config
        gzip on;
        gzip_min_length 1k;
        gzip_comp_level 9;
        gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
        gzip_vary on;
        gzip_disable "MSIE [1-6]\.";
    
        root /usr/share/nginx/html;
        include /etc/nginx/mime.types;
    
        location / {
        # 当访问不到路径时,降级请求主页
            try_files $uri /index.html;
        }
    }
    
  • 准备Dockerfile

    FROM  nginx
    # 指定工作目录 /user/share/nginx/html/
    WORKDIR /user/share/nginx/html/
    USER root
    
    COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf
    
    COPY ./dist /user/share/nginx/html/
    
    EXPOSE 80
    
    CMD [ "nginx", "-g", "daemon off;" ]
    

    补充说明:

    • 目录层级结构说明:dist文件夹docker文件夹(包含nginx.conf)Dockerfile同级
    • 上面的配置,相当于将物理主机当前目录的dist文件夹映射到容器的/usr/share/nginx/html,当前目录的./docker/nginx.conf映射到/etc/nginx/conf.d/default.conf。所以配置里面的root/usr/share/nginx/html
  • 构建镜像

    docker build -t [镜像名]:[tag]
    
  • 运行容器

    docker run --name [容器名] -d -p [端口映射] [镜像名]:[tag]
    

一定要注意目录层级!!!

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值