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

2021-06-09  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读