繁体   English   中英

Docker 文件到 docker 组成

[英]Docker files to docker compose

我是 docker 的新手。 我正在制作 java sockets 音乐服务器,我有 2 个文件。 Client.java 和 Server.java。 两者都在不同的容器中。 值得一提的是,我在命令行中运行这两个服务

Docker 文件

FROM java:8
COPY Server.java /
RUN javac Server.java
EXPOSE 25000
ENTRYPOINT ["java"]
CMD ["Server"]
FROM java:8
COPY Client.java /
RUN javac Client.java
EXPOSE 25000
ENTRYPOINT ["java"]
CMD ["Client"]

我还为这两个通信创建了一个网络

docker network create client_server_network

我运行图像如下:

docker run --env SERVER_HOST_ENV=server --network-alias server --network client_server_network -it server

docker run --network client_server_network -it clientimage

现在我想用这两个 Dockerfile 和网络创建一个 docker 组合文件。 这是我到目前为止所做的:

version:'3'
services:
  client:
    image: java:8
    ports:
      -25000:25000
    network:
      default:
        name: client_server_network  
    

  server:
    image: java:8
    ports:
      -25000:25000
    environment:
      -SERVER_HOST_ENV=server 
    network:

我的问题是如何在两种服务中添加公共网络。 我写 docker 撰写文件的方式也是正确的吗?

下面是代码,默认情况下,两个容器都添加到名为 net 的网络中,并且它还必须在最后一行提供

version:'3'
services:
  client:
    image: java:8
    ports:
      - 25000:25000
    networks:
      - client_server_network  
    

  server:
    image: java:8
    ports:
      - 25000:25000
    environment:
      - "SERVER_HOST_ENV=server" 
    networks:
      - client_server_network
networks:
  client_server_network:

请注意,网络应在相同级别的服务和版本中最后共同指定。 由于缩进是 docker-compose 中的主要因素。 如果缩进不正确可能会显示错误。

删除所有networks:整个文件中的块。 clientserver将可用作这两个容器的主机名。

Docker 文档中的Networking in Compose中进一步描述了此行为。 如果您不声明顶级networks: ,Compose 会创建一个名为default的网络,如果您不声明networks:在给定服务上,Compose 会将其附加到该default网络。

您的两个docker run命令的功能转换如下所示:

version: '3.8'
# Compose creates `networks: { default: }` on its own; you do not need
# top-level `networks:`
services:
  server: # <-- this name is usable as a host name
    image: server
    environment:
      - SERVER_HOST_ENV=server
    # Automatically on `networks: [default]`
  client:
    image: clientimage

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM