源铸:恒星Horizon容器相关调试及操作

恒星容器镜像

恒星镜像使用下列软件:

  • Postgresql 9.6 存储 stellar-core 和 horizon 数据

  • stellar-core

  • horizon

  • Supervisord 管理上述服务

恒星镜像使用

恒星镜像网络模式

恒星镜像支持 --pubnet, --testnet or --standalone三种网络模式。

分别对应公共网络、测试网络、私有网络。

--pubnet(公共网络):连接到恒星的正式网络。

--testnet(测试网络):连接到恒星的测试网络。

--testnet(私有网络):搭建私有的恒星网络。

恒星容器交互vs后台进程

恒星容器启动时,采用 -it 标志启动交互模式,可以方便调试;采用 -d 标志启动后台进程模式。

Ephemeral 模式

Ephermeral模式用来支持开发和测试。每次Ephemeral模式启动数据库都是空的,配置文件采用默认的。

启动Ephemeral模式,非常简单。docker run的时候,不需要挂载volume即可。启动命令如下:

$ sudo docker run --rm -it -p "8000:8000" --name stellar stellar/quickstart --testnet

Persistent 模式

Persistent模式会存储数据,启动Persistent模式需要挂载宿主机的volume。这个volume就是宿主机目录,该目录存储数据及配置文件。

启动命令如下:

docker run --rm -it -p "8000:8000" -v "/home/scott/stellar:/opt/stellar" --name stellar stellar/quickstart --testnet

其中/home/scott/stellar指定宿主机目录。启动时,会把容器里/opt/stellar目录下配置文件拷贝到宿主机/home/scott/stellar目录下。

推荐按照如下步骤启动Persistent模式:

  1. 启动交互模式的容器,确保所有服务正常
  2. 关闭交互模式容器(Ctrl+C)
  3. 使用相同的宿主机目录,重新启动容器后台进程模式

定制配置文件

定制配置文件必须以Persistent模式启动,缺省的配置文件在第一次启动时拷贝到宿主机目录。配置文件如下:

  /opt/stellar
  |-- core                  
  |   `-- etc
  |       `-- stellar-core.cfg  # Stellar core config
  |-- horizon
  |   `-- etc
  |       `-- horizon.env       # A shell script that exports horizon's config
  |-- postgresql
  |   `-- etc
  |       |-- postgresql.conf   # Postgresql root configuration file
  |       |-- pg_hba.conf       # Postgresql client configuration file
  |       `-- pg_ident.conf     # Postgresql user mapping file
  `-- supervisor
      `-- etc
  |       `-- supervisord.conf  # Supervisord root configuration

注意: 推荐停止容器后,再编辑配置文件。

端口

Port Service Description
5432 postgresql database access port
8000 horizon http port
11625 stellar-core peer node port
11626 stellar-core main http port

端口安全

暴露 horizon的http端口8000是安全的。比较安全、便于开发的启动模式如下:

sudo docker run -it -v "/home/jon/stellar/horizon/testnet:/opt/stellar" -p "8000:8000" -p "127.0.0.1:5432:5432" --name stellar stellar/quickstart --testnet

访问调试容器

访问名为stellar的容器,执行如下命令:

$ sudo docker exec -it stellar /bin/bash

重启服务

通过如上命令进入容器的shell后,执行 * supervisorctl * 命令,shell出现如下内容:

horizon                          RUNNING    pid 143, uptime 0:01:12
postgresql                       RUNNING    pid 126, uptime 0:01:13
stellar-core                     RUNNING    pid 125, uptime 0:01:13
supervisor>

重启horizon

supervisor> restart horizon  

停止stellar-core

supervisor> stop stellar-core

查看logs

log放在容器/var/log/supervisor/目录下。

访问数据库

镜像管理着两个数据库,core存储stellar-core的数据,horizon存储horizon数据。

连接postgresql数据库用户名为stellar,密码取决于你的启动模式。Persistent模式是启动时候输入的密码;Ephemeral模式启动时自动产生密码,并打印在屏幕上。

常用启动命令

后台启动一个Ephemeral模式公网节点:

$ docker run -d -p "8000:8000" --name stellar stellar/quickstart --pubnet

前台启动一个Ephemeral模式测试节点,并暴露所有接口:

$ docker run --rm -it \
    -p "8000:8000" \
    -p "11626:11626" \
    -p "11625:11625" \
    --name stellar \
    stellar/quickstart --testnet

启动一个宿主机目录为/str,新的Persistent节点:

$ docker run -it --rm \
    -v "/str:/opt/stellar" \
    --name stellar \
    stellar/quickstart --pubnet

后台启动一个已经在宿主机目录初始化过的公网节点:

$ docker run -d \
    -v "/str:/opt/stellar" \
    -p "8000:8000" \
    --name stellar \
    stellar/quickstart --pubnet

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 序 江城的雨又开始下了,淅淅沥沥的,空气中也都是水,潮湿不堪,天空阴的厚厚的,仿佛要砸下来一般。草木都在这...
    聆听雨声的忧伤阅读 1,462评论 0 2
  • 有大格局的人,从不骄傲自满,也不固步自封。心灵在高处,方能俯瞰天地;视野不囿于当下,才能海纳百川。 有这样一句话,...
    白帆子MX阅读 4,468评论 0 0
  • 今天做了一天的项目 发现很多问题啊 下午助教帮忙传的资料 接受了好久好崩溃 昨天助教老师专门给我们下载了好多东西 ...
    吕林桦阅读 1,033评论 0 0