美文网首页
Docker实用-微服务Jar包

Docker实用-微服务Jar包

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2023-05-23 16:43 被阅读0次

    当我们的微服务是部署到容器中的时候,若服务较多,那么一个个的启动就会比较麻烦。此外还会遇到顺序的问题,服务都部署到容器了,那么mysql、redis、nacos了一般也就在容器了,我们启动服务时,mysql、redis、nacos这些是要提前启动好的。为了解决这些问题,我们可以使用docker-compose.yml文件编排容器。

    1. 微服务做成docker镜像

    首先呢,我们需要将我们的微服务做成Docker镜像。这一步我们需要Dockerfile文件。
    1.1 Dockerfile文件
    jdk环境呢,docker hub上有官方的基于openjdk的java镜像,我们可以直接用此作为底层包。
    也可以参考前面Dockerfile的应用,自己制作jdk环境,还可以加其他自己想要的功能。

    参考:DockerFile使用
    使用官方的java环境,Dockerfile简单的是这样的:

    sudo mkdir -p /home/soft/jar/
    cd /home/soft/jar
    # 将我们的jar包拷贝到这个目录
    # 在此目录新建Dockerfile文件
    sudo vim Dockerfile
    

    写入以下内容:

    FROM java:8
    LABEL author="zrb" version="1.2"
    LABEL description="admin server image"
    # VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
    VOLUME /tmp
    #设置时区 根据情况看是否需要
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    # 将jar包添加到容器中并更名为xxx.jar
    ADD boot-admin-server.jar admin-server.jar
    RUN bash -c 'touch /admin-server.jar'
    # 运行jar包
    ENTRYPOINT ["java", "-jar", "-Dfile.encoding=utf-8", "-Dspring.config.location=classpath:/application-local.yml", "/admin-server.jar"]
    #暴露9009端口
    EXPOSE 9009
    

    我的目录是这样的:

    目录
    1.2 运行命令,生成镜像
    命令:sudo docker build -t admin:1.2 .
    镜像构建成功以后,我们run测试一下:
    sudo docker run -it --name admin admin:1.2
    build
    run
    test

    2. docker-compose.yml编排微服务

    编写myserver.yml文件:

    version: "3.9"
    services:
      admin:
        image: admin:1.2
        hostname: admin-server
        container_name: admin-server
        ports:
          - "9009:9009"
        #volumes:
         # - /app/microService:/data
        networks: 
          zrb_network:
            ipv4_address: 192.168.20.50
        # 有先后顺序,需要这个
        depends_on: 
          - redis6
          - mysql6
    
      redis6:
        hostname: redis6
        container_name: redis6
        image: redis
        ports:
          - "6479:6379"
        volumes:
          - /home/soft/redis6/redis.conf:/etc/redis/redis.conf
          - /home/soft/redis6/data:/data
        networks: 
          zrb_network:
            ipv4_address: 192.168.20.51
        command: redis-server /etc/redis/redis.conf
    
      mysql6:
        image: mysql
        hostname: mysql6
        container_name: mysql6
        environment:
          MYSQL_ROOT_PASSWORD: '123456'
          MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
          MYSQL_DATABASE: 'db2021'
          TZ: Asia/Shanghai
        ports:
           - "3396:3306"
        volumes: 
           - /home/soft/mysql6/log:/var/log/mysql
           - /home/soft/mysql6/data:/var/lib/mysql
           - /home/soft/mysql6/conf/my.cnf:/etc/mysql/my.cnf
           - /home/soft/mysql6/mysql-files:/var/lib/mysql-files
        networks: 
          zrb_network:
            ipv4_address: 192.168.20.52
    networks: 
      # 这里网络是提前创建的,且定义了ip,所以这里直接拿来用,这么写
      zrb_network: 
        external: true
    

    检查启动

    sudo docker compose -f myserver.yml config -q
    sudo docker compose -f myserver.yml up
    
    1684917749701.png

    相关文章

      网友评论

          本文标题:Docker实用-微服务Jar包

          本文链接:https://www.haomeiwen.com/subject/mwzwsdtx.html