恒星容器镜像
恒星镜像使用下列软件:
-
Postgresql 9.6 存储 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模式:
- 启动交互模式的容器,确保所有服务正常
- 关闭交互模式容器(Ctrl+C)
- 使用相同的宿主机目录,重新启动容器后台进程模式
定制配置文件
定制配置文件必须以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
网友评论