컨테이너화는 애플리케이션의 코드를 모든 인프라에서 실행하는 데 필요한 모든 파일 및 라이브러리와 함께 번들로 제공하는 소프트웨어 배포 프로세스입니다. 인프라블록체인(InfraBlockchain) 에 속해있는 모든 체인 또한 컨테이너화가 가능하며, 관련 방법은 아래에 나와 있습니다.
컨테이너 이미지 만들기
도커 컨테이너 이미지(Docker container image)를 만드는 방법에 대해 알아보겠습니다.
컨테이너 이미지를 만들기 위해서는 'Dockerfile'이 필요합니다. 여기서는 릴레이체인의 컨테이너 이미지를 만드는 것에 대해 설명합니다. 다른 체인의 컨테이너 이미지를 만드시길 원하실 경우, 아래 링크에 접속한 다음 원하시는 체인 레포지토리에서 확인하시길 바랍니다.
FROM ubuntu:jammy AS builder# The node will be built in this directoryWORKDIR /infra-relay-chainRUN apt -y update && \ apt install -y --no-install-recommends \ software-properties-common llvm curl git file binutils binutils-dev \ make cmake ca-certificates clang g++ zip dpkg-dev openssl gettext \ build-essential pkg-config libssl-dev libudev-dev time clang protobuf-compiler# install rustupRUN curl https://sh.rustup.rs -sSf | sh -s -- -y# rustup directoryENV PATH /root/.cargo/bin:$PATH# setup rust nightly channel, pinning specific version as newer versions have a regressionRUN rustup install nightly-2023-05-21RUN rustup default nightly-2023-05-21# install wasm toolchain for substrateRUN rustup target add wasm32-unknown-unknown --toolchain nightly-2023-02-20#compiler ENVENV CC clangENV CXX g++# Copy code to build directory, instead of only using .dockerignore, we copy elements# explicitly. This lets us cache build results while iterating on scripts.COPY . .RUN echo 'Building in release mode.' ; \ cargo build --release ; \ mv /infra-relay-chain/target/release/infra-relaychain /infra-relay-chain/target/; # Final stage. Copy the node executable and the scriptFROM ubuntu:jammyWORKDIR /infra-relay-chainCOPY --from=builder /infra-relay-chain/target/infrablockspace .# curl is required for uploading to keystore# note: `subkey insert` is a potential alternarve to curlRUN apt -y update \ && apt install -y --no-install-recommends curl \ && rm -rf /var/lib/apt/lists/*# expose node portsEXPOSE 30333 9933 9944ENV RUST_BACKTRACE 1ENTRYPOINT ["./infrablockspace"]CMD []
관련 파일 작성이 완료되면, 아래 명령어를 통해 container image를 생성합니다.