优秀的编程知识分享平台

网站首页 > 技术文章 正文

区块链技术EOS测试版Docker方式安装指南

nanyue 2024-07-22 14:02:57 技术文章 21 ℃

互联网技术EOS团队正式发布测试版本,开发者可以利用接口创建合约。本文主要介绍如何用Docker方式安装,主要因为作者用Mac原生机器安装时,出现各种问题。Docker完美解决本地环境影响。

注意:下面是ubuntu环境下安装Docker,如果是Mac环境,请自行搜索Mac环境安装Docker

Docker安装

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update

apt-cache policy docker-ce

sudo apt-get install -y docker-ce git

sudo systemctl status docker

生成Dockereos镜像文件(这里UbuntuMac一致)

git clone https://github.com/EOSIO/eos

cd eos/Docker

cp ../genesis.json .

注意我们要在ini配置文件做改动

nano config.ini

加入下面

plugin = eos::chain_api_plugin

  • 这里需要注意官方的DockerFile,我们需要做改动,make install因为docker对内存的限制,我们需要将make -j4改为make -j2。避免编译时内存管理问题。

  • 还有一点,编译eos时会提示Could NOT find GMP (missing: GMP_LIBRARIES GMP_INCLUDE_DIR),也就是gmp这个包没装上,需要我们编译安装

修改Dockerfile后代码如下:

FROM ubuntu

MAINTAINER xiaobo (peterwillcn@gmail.com)

RUN echo 'APT::Install-Recommends 0;' >> /etc/apt/apt.conf.d/01norecommends \

&& echo 'APT::Install-Suggests 0;' >> /etc/apt/apt.conf.d/01norecommends \

&& apt-get update \

&& DEBIAN_FRONTEND=noninteractive apt-get install -y sudo wget net-tools ca-certificates unzip

RUN echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-4.0 main" >> /etc/apt/sources.list.d/llvm.list \

&& wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - \

&& apt-get update \

&& DEBIAN_FRONTEND=noninteractive apt-get install -y git-core automake autoconf libtool build-essential pkg-config libtool \

mpi-default-dev libicu-dev python-dev python3-dev libbz2-dev zlib1g-dev libssl-dev \

clang-4.0 lldb-4.0 lld-4.0 \

&& rm -rf /var/lib/apt/lists/*

RUN update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-4.0/bin/clang 400 \

&& update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-4.0/bin/clang++ 400

RUN cd /tmp && wget https://cmake.org/files/v3.9/cmake-3.9.0-Linux-x86_64.sh \

&& mkdir /opt/cmake && chmod +x /tmp/cmake-3.9.0-Linux-x86_64.sh \

&& sh /tmp/cmake-3.9.0-Linux-x86_64.sh --prefix=/opt/cmake --skip-license \

&& ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake

RUN cd /tmp && wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz \

&& tar zxf boost_1_64_0.tar.gz \

&& cd boost_1_64_0 \

&& ./bootstrap.sh --with-toolset=clang \

&& ./b2 -a -j$(nproc) stage release -sHAVE_ICU=1 --sICU_PATH=/usr \

&& ./b2 install --prefix=/usr \

&& rm -rf /tmp/boost_1_64_0*

RUN cd /tmp && git clone https://github.com/cryptonomex/secp256k1-zkp.git \

&& cd secp256k1-zkp \

&& ./autogen.sh && ./configure && make && make install \

&& ldconfig && rm -rf /tmp/secp256k1-zkp*

RUN cd /tmp && mkdir wasm-compiler && cd wasm-compiler \

&& git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/llvm.git \

&& cd llvm/tools && git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/clang.git \

&& cd .. && mkdir build && cd build \

&& cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/opt/wasm -DLLVM_TARGETS_TO_BUILD= -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly -DCMAKE_BUILD_TYPE=Release ../ \

&& make -j2 install && rm -rf /tmp/wasm-compiler

RUN cd /tmp && wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2 \

&& tar -xvf gmp-6.1.2.tar.bz2 && cd gmp-6.1.2 \

&& ./configure && make && sudo make install \

&& rm -rf /tmp/gmp-6.1.2

RUN cd /tmp && git clone https://github.com/EOSIO/eos.git --recursive \

&& cd eos && mkdir build && cd build \

&& WASM_LLVM_CONFIG=/opt/wasm/bin/llvm-config cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_INSTALL_PREFIX=/opt/eos ../ \

&& make -j2 && make install \

&& rm -rf /tmp/eos*

RUN mkdir -p /opt/eos/bin/data-dir

COPY config.ini genesis.json /

COPY entrypoint.sh /sbin

RUN cd /opt/eos/bin && chmod +x /sbin/entrypoint.sh

VOLUME /opt/eos/bin/data-dir

EXPOSE 9876 8888

ENTRYPOINT ["/sbin/entrypoint.sh"]

运行

sudo docker build --rm -t eosio/eos .

如下图所示build成功

生成eos的容器

sudo docker run --rm --name eos -d -p 8888:8888 -p 9876:9876 eosio/eos

sudo docker logs --tail 10 eos # 检查日志

测试

执行

sudo docker exec eos /opt/eos/bin/eosc info

最近发表
标签列表