Docker로 구성된 이더넷 PET-SHOP TRUFLE BOXES(중 하나)

TruffleBoxs 시작하기(이하 "입문 보도")
그럼 다음 사이트를 모방해 보겠습니다. (다음은 React & Truffle 보도입니다.)
TruffleBox(React & Truffle)를 사용하여 Docker에 dapps(블록체인 응용)의 개발 환경을 구축하다
본 보도에서 저는 더욱 실천적인 교육 모델에 도전하여 애완동물 가게를 열어 보려고 합니다.
ETHEREUM PET SHOP -- YOUR FIRST DAPP
그나저나 이 튜토리얼이 어떤 건지 지금 핫한 딥엘로 번역하면 그렇습니다.
이 강좌에서는 애완동물 가게를 위한 입양 추적 시스템을 만드는 과정을 설명한다.
이 강좌는 이더미와 스마트 구조기의 기본 지식, HTML과 자바스크립트의 지식이 있지만, dapth는 첫 번째 사람을 대상으로 한다.

개발 환경 구축


Docker 환경


참고React & Truffle 보도로 사용된 TruffleBox를 애완동물점으로 변경하는 형식으로 Docker 환경을 준비합니다.
docker-compose.yml
version: '3'

services:
  truffle:
    build: 
      context: ./trufflebox/
      dockerfile: Dockerfile
    volumes:
      - ./trufflebox:/usr/src/app
    command: sh -c "cd client && yarn start"
    ports:
      - "8003:3000"
Dockerfile
FROM node:8-alpine  

RUN apk add --update alpine-sdk
RUN apk add --no-cache git python g++ make \
    && npm i -g --unsafe-perm=true --allow-root truffle 

WORKDIR /usr/src/app
다음 구조로 이 두 파일을 제작한다.
pet-shop
├── docker-compose.yml
└── trufflebox
    └── Dockerfile
pet-shop 폴더에서 다음 동작을 실행합니다.
$ docker-compose build
Building truffle
Step 1/4 : FROM node:8-alpine
 ---> 2b8fcdc6230a
Step 2/4 : RUN apk add --update alpine-sdk
 ---> Using cache
 ---> 761342077e72
Step 3/4 : RUN apk add --no-cache git python g++ make     && npm i -g --unsafe-perm=true --allow-root truffle
 ---> Using cache
 ---> 82200b1b0c8f
Step 4/4 : WORKDIR /usr/src/app
 ---> Using cache
 ---> 4eb121f5853d
Successfully built 4eb121f5853d
Successfully tagged pet-shop_truffle:latest
$ docker-compose run truffle truffle unbox pet-shop
Creating network "pet-shop_default" with the default driver
You can improve web3's performance when running Node.js versions older than 10.5.0 by installing the (deprecated) scrypt package in your project
This directory is non-empty...
? Proceed anyway? (Y/n) 
Starting unbox...
=================

? Proceed anyway? Yes
✔ Preparing to download box
✔ Downloading
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

✔ cleaning up temporary files
✔ Setting up box

Unbox successful, sweet!

Commands:

  Compile:        truffle compile
  Migrate:        truffle migrate
  Test contracts: truffle test
  Run dev server: npm run dev
React & Truffle 보도에서'unbox react'부분으로 이번에는'unbox pet-shop'이다.
그러므로
https://www.trufflesuite.com/boxes/pet-shop
를 참고하십시오.

이더넷 네트워크


React & Truffle 기사를 참고하여 Doke 환경에서 로컬 Ganache의 테스트 네트워크로 연결합니다.
먼저 로컬 환경에 연결할 수 있는 IP 주소를 할당합니다.
로컬 IP 주소가 없을 때 설정합니다.(React & Truffle 보도 및 입문 보도 참조)
그런 다음 Ganache의 설정 화면에서 로컬 IP 주소로 시작하도록 지정합니다.

PORT NUMBER는 7545입니다.이거 이따 나와.
이 상태에서 METAMASK를 통해 연결할 수 있는지 확인합니다.
METAMASK는 이 주소, 포트를 통한 연결 설정을 추가했다.

여기에 연결하기 위해truffle-config.구성
방금 실행된 unbox pet-shop은trufflebox 폴더에 파일을 만들었습니다.
자동 제작된truffle-config.js는 다음과 같다.
truffle-config.js(자동 제작)
module.exports = {
  // See <http://truffleframework.com/docs/advanced/configuration>
  // for more about customizing your Truffle configuration!
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*" // Match any network id
    },
    develop: {
      port: 8545
    }
  }
};
네트워크 이름을 지정하지 않으면truffle는 개발자를 사용합니다.
따라서 여기서 설정을 변경합니다.
truffle-config.js(변경)
module.exports = {
  // See <http://truffleframework.com/docs/advanced/configuration>
  // for more about customizing your Truffle configuration!
  networks: {
    development: {
      host: "10.200.10.1",
      port: 7545,
      network_id: "*" // Match any network id
    },
    develop: {
      port: 8545
    }
  }
};
그리고 내 사이즈=Ganache의 deproy.
$ docker-compose run truffle truffle migrate
You can improve web3's performance when running Node.js versions older than 10.5.0 by installing the (deprecated) scrypt package in your project

Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.



Starting migrations...
======================
> Network name:    'development'
> Network id:      5777
> Block gas limit: 0x6691b7


1_initial_migration.js
======================

   Deploying 'Migrations'
   ----------------------
   > transaction hash:    0xd032d73ed143eeb44062f09d02fa64888d9c133d3addb2ff79ccef63d7a4f1ff
   > Blocks: 0            Seconds: 0
   > contract address:    0xF88b3D9805da39D094178f2ba0dCc38a0610d214
   > block number:        5
   > block timestamp:     1585053865
   > account:             0xc55F3d6C444ca88f529F3413EDEd85a39e38609C
   > balance:             99.98893326
   > gas used:            188483
   > gas price:           20 gwei
   > value sent:          0 ETH
   > total cost:          0.00376966 ETH


   > Saving migration to chain.
   > Saving artifacts
   -------------------------------------
   > Total cost:          0.00376966 ETH


Summary
=======
> Total deployments:   1
> Final cost:          0.00376966 ETH
시동을 걸다.
$ docker-compose up
Creating pet-shop_truffle_1 ... done
Attaching to pet-shop_truffle_1
truffle_1  | sh: cd: line 1: can't cd to client: No such file or directory
pet-shop_truffle_1 exited with code 2
아이고, 실패했구나.폴더 구성이 다르네요.
docker-compose.yml의command를 수정합니다.
docker-compose.yml
version: '3'

services:
  truffle:
    build: 
      context: ./trufflebox/
      dockerfile: Dockerfile
    volumes:
      - ./trufflebox:/usr/src/app
    command: sh -c "npm run dev"
    ports:
      - "8003:3000"
$ docker-compose up
Recreating pet-shop_truffle_1 ... done
Attaching to pet-shop_truffle_1
truffle_1  | 
truffle_1  | > [email protected] dev /usr/src/app
truffle_1  | > lite-server
truffle_1  | 
truffle_1  | ** browser-sync config **
truffle_1  | { injectChanges: false,
truffle_1  |   files: [ './**/*.{html,htm,css,js}' ],
truffle_1  |   watchOptions: { ignored: 'node_modules' },
truffle_1  |   server: 
truffle_1  |    { baseDir: [ './src', './build/contracts' ],
truffle_1  |      middleware: [ [Function], [Function] ] } }
truffle_1  | [Browsersync] Access URLs:
truffle_1  |  -----------------------------------
truffle_1  |        Local: http://localhost:3000
truffle_1  |     External: http://172.22.0.2:3000
truffle_1  |  -----------------------------------
truffle_1  |           UI: http://localhost:3001
truffle_1  |  UI External: http://localhost:3001
truffle_1  |  -----------------------------------
truffle_1  | [Browsersync] Serving files from: ./src
truffle_1  | [Browsersync] Serving files from: ./build/contracts
truffle_1  | [Browsersync] Watching files...
truffle_1  | [Browsersync] Couldn't open browser (if you are using BrowserSync in a headless environment, you might want to set the open option to false)
브라우저에서
http://localhost:8003/
탭화면 켜!

이로써 PET-SHOP 송로 케이스의 Installation은 Docker 환경에서 형성되었고ETHEREUM PET SHOP -- YOUR FIRST DAPP의 Wrinting the smart contract가 시작되었다.
이쯤에서 끝내고 다음 기사에서 스마트 설정을 만들겠습니다.

좋은 웹페이지 즐겨찾기