首页 > 解决方案 > 如何使用 docker-compose 和 Hyperledger Sawtooth 访问暴露的容器?

问题描述

我正在尝试在 Mac 上使用 Docker CE 运行 Hyperledger Sawtooth 的基本版本。docker-compose.yaml 包含运行来自 Sawtooth 的基础镜像的容器。

即使在我运行 docker ps 时为它发布了端口,我也无法从主机访问 Sawtooth REST API。docker-compose 文件已在其他运行 Docker CE 的 Mac 上运行,所以我怀疑它可能是配置或设置问题。

docker-compose.yaml 的内容如下:

version: '2.1'

services:
  settings-tp:
    image: 'hyperledger/sawtooth-settings-tp:1.1.3'
    container_name: sawtooth-settings-tp
    depends_on:
      - validator
    entrypoint: settings-tp --connect tcp://validator:4004

  identity-tp:
    image: 'hyperledger/sawtooth-identity-tp:1.1.3'
    container_name: sawtooth-identity-tp
    depends_on:
    - validator
    entrypoint: identity-tp -vv --connect tcp://validator:4004

  rest-api:
    image: 'hyperledger/sawtooth-rest-api:1.1.3'
    container_name: sawtooth-rest-api
    ports:
      - '8008:8008'
    depends_on:
      - validator
    entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8008

  validator:
    image: 'hyperledger/sawtooth-validator:1.1.3'
    container_name: sawtooth-validator
    ports:
      - '4004:4004'
    command: |
      bash -c "
        if [ ! -f /etc/sawtooth/keys/validator.priv ]; then
          sawadm keygen
          sawtooth keygen my_key
          sawset genesis -k /root/.sawtooth/keys/my_key.priv
          sawset proposal create \
                    -k /root/.sawtooth/keys/my_key.priv \
                    sawtooth.consensus.algorithm.name=Devmode \
                    sawtooth.consensus.algorithm.version=0.1 \
                    -o config.batch && \
          sawadm genesis config-genesis.batch config.batch
        fi;
        sawtooth-validator -vvv \
          --endpoint tcp://validator:8800 \
          --bind component:tcp://eth0:4004 \
          --bind network:tcp://eth0:8800 \
          --bind consensus:tcp://eth0:5050 \
      "

  devmode-engine:
    image: 'hyperledger/sawtooth-devmode-engine-rust:1.1.3'
    container_name: sawtooth-devmode-engine-rust-default
    depends_on:
    - validator
    entrypoint: devmode-engine-rust -C tcp://validator:5050

标签: docker-composehyperledger-sawtooth

解决方案


如果您无法从主机访问端口,则容器一定没有正确运行。启动时查找该容器的错误消息docker-compose

显示什么docker ps -a

你能连接到端口吗?尝试类似的东西telnet localhost 8008


推荐阅读