美文网首页
docker-compose 运行项目(es、kibana、mo

docker-compose 运行项目(es、kibana、mo

作者: 李小二的倔强 | 来源:发表于2021-06-09 11:15 被阅读0次

    曲木为直终必弯,养狼当犬看家难;墨染鸬鹚黑不久,粉刷乌鸦白不坚。
    蜜饯黄莲终需苦,强摘瓜果不能甜;好事总得善人做,哪有凡人做神仙。

    安装docker环境与docker-compose 环境参考 https://www.jianshu.com/p/b3fe90a35c4d

    1.自己项目打包成镜像

    (1)项目加入插件

    自己的项目pom文件添加mvn插件才能打包,还有一个 docker-maven-plugin 插件,已经不推荐使用,现在推荐使用dockerfile,但是dockerfile 的前提是必须服务器有docker环境

    <!-- docker支持 -->
    <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>dockerfile-maven-plugin</artifactId>
        <version>1.4.13</version>
        <configuration>
            <repository>${docker.image.prefix}/${project.artifactId}</repository>
            <tag>${project.version}</tag>
            <buildArgs>
                <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
            </buildArgs>
        </configuration>
    </plugin>
    
    (2)编写dockerfile

    注意:名称为Dockerfile并且跟pom文件同级

    FROM openjdk:11-jre-slim
    EXPOSE 8080
    ARG JAR_FILE
    ADD target/${JAR_FILE} /odcnode.jar
    ENTRYPOINT ["java", "-jar","/odcnode.jar"]
    
    (3)构建docker镜像
    1.首先要将项目打包成jar
    mvn package -DskipTests
    
    2.构建docker镜像
    mvn dockerfile:build
    
    docker镜像重命名
    docker tag IMAGEID  REPOSITORY:TAG
    

    2.编写docker-compose 文件 后缀为:.yaml 、.yml

    version: '3'
    
    services:
      mongo:
        container_name: mongo
        image: 'mongo'
        restart: always
        ports:
          - 27017:27017
        privileged: true
        volumes:
            - /usr/local/pid/mongodata:/data/db
      elasticsearch:
        container_name: elasticsearch
        image: 'elasticsearch:7.9.3'
        environment:
    #      - node.name=odc_node_1
    #      - network.host=0.0.0.0
    #      - http.port=9200
          # ① 就是 volumes 挂载权限问题
          - TAKE_FILE_OWNERSHIP=true
          # ②
          - discovery.type=single-node
        volumes:
          # ③
          - /usr/local/pid/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
          - /usr/local/pid/esdata:/usr/share/elasticsearch/data
          - /usr/local/pid/eslogs:/usr/share/elasticsearch/logs
        hostname: elasticsearch
        restart: always
        ports:
          - "9200:9200"
          - "9300:9300"
        privileged: true
      kibana:
        container_name: kibana
        image: 'kibana:7.9.3'
        #链接es地址
        environment:
          - ELASTICSEARCH_URL=http://elasticsearch:9200 #elasticsearch查询接口地址
        hostname: kibana
        depends_on:
          - elasticsearch
        restart: always
        ports:
          - "5601:5601"
      odc-node:
        container_name: odc-node
        #镜像名称
        image: 'odc/odc-node:0.0.1'
        #此镜像在elasticsearch、mongo镜像启动之后在启动
        depends_on:
          - elasticsearch
          - mongo
        #容器开放的端口
        ports:
          - 8080:8080
          - 7000:7000
        privileged: true
    

    ① 这个注解不许加要不就会出现以下错误

    image.png
    我也有这个错误具体,解释看一个大神博客
    link:https://blog.csdn.net/qq_15256981/article/details/88605824

    ② 如果是单节点启动必须要加上这个属性,如果是集群删除这个属性
    docker-compose 和作者普通安装es单节点不同之处在于,普通安装必须要加上cluster.initial_master_nodes: ["odc_node_1"]这个属性,但是docker不能添加否色会和②属性有冲突

    ③ docker容器内部可以引用普通安装的es配置文件具体配置如下,也可以直接在environment中直接配置,上面docker-compose文件中已经存在,就是注释了

    #cluster.name: odc
    node.name: odc_node_1
    path.data: /usr/share/elasticsearch/data
    path.logs: /usr/share/elasticsearch/logs
    network.host: 0.0.0.0
    http.port: 9200
    #cluster.initial_master_nodes: ["odc_node_1"]
    

    3.启动docker-compose 文件

    docker-compose 会自动从dockerhub中拉取镜像,所有docker-compose文件中的镜像名称包括版本一定要正确,如果前台启动取消命令中的 -d

    docker-compose -f odc-compose.yaml up -d
    

    相关文章

      网友评论

          本文标题:docker-compose 运行项目(es、kibana、mo

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