美文网首页
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