如何将 docker-compose 配置转换为 dockerfile

mor*_*676 2 docker dockerfile docker-compose

我有点困惑,我试图将弹性 kibana 的 dockercompose 转换为 dockerfile。但网络部分和连接部分让我有点困惑。任何人都可以帮助我进行转换和一些解释。

多谢!

version: "3.0"

services:
  elasticsearch:
    container_name: es-container
    image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4
    environment:
      - xpack.security.enabled=true
      - "discovery.type=single-node"
    networks:
      - es-net
    ports:
      - 9200:9200  
  kibana:
    container_name: kb-container
    image: docker.elastic.co/kibana/kibana:6.5.4
    environment:
      - ELASTICSEARCH_HOSTS=http://es-container:9200
    networks:
      - es-net
    depends_on:
      - elasticsearch
    ports:
      - 5601:5601

networks:
  es-net:
    driver: bridge
Run Code Online (Sandbox Code Playgroud)

mtt*_*trb 5

Docker Compose 和 Dockerfile 是完全不同的东西。这Dockerfile是用于创建 Docker 映像的配置文件。该docker-compose.yml文件是 Docker Compose 使用 Docker 映像启动 Docker 容器的配置文件。

要在不使用 Docker Compose 的情况下启动上述容器,您可以运行:

 docker network create es-net
 docker run -d -e xpack.security.enabled=true -e "discovery.type=single-node" -p 9200:9200 --network es-net --name es-container docker.elastic.co/elasticsearch/elasticsearch:6.5.4
 docker run -d -e ELASTICSEARCH_HOSTS=http://es-container:9200 -p 5601:5601 --network es-net --name kb-container docker.elastic.co/kibana/kibana:6.5.4
Run Code Online (Sandbox Code Playgroud)

或者,您可以在主机网络堆栈(而不是网络)上运行容器es-net。然后 Kibana 就可以与本地主机上的 ElasticSearch 对话:

 docker run -d -e xpack.security.enabled=true -e "discovery.type=single-node" --network host --name es-container docker.elastic.co/elasticsearch/elasticsearch:6.5.4
 docker run -d -e ELASTICSEARCH_HOSTS=http://localhost:9200 --network host --name kb-container docker.elastic.co/kibana/kibana:6.5.4
Run Code Online (Sandbox Code Playgroud)

(我实际上没有运行这些命令,因此命令可能需要一些调整)。