[Herramientas de desarrollo de contratos] solidez + ejecución de casco en un contenedor docker

prefacio

A diferencia del desarrollo web tradicional, las herramientas de prueba para las aplicaciones de cadena de bloques aún no son perfectas. Cómo llevar a cabo la depuración conjunta localmente de manera conveniente y atravesar el flujo de datos de front-end, back-end, contratos e incluso nodos gráficos es un tema clave para desarrolladores Un camino que vale la pena explorar.

En nuestro equipo, diferentes ingenieros usan diferentes entornos. Si queremos que los arquitectos o los ingenieros de pruebas construyan fácilmente entornos localmente, debemos usar contenedores para lograr este objetivo.

Docker se usa ampliamente en muchos contenedores y tiene herramientas completas, por lo que elegimos docker como contenedor.

Este artículo presenta cómo usar el contrato de solidez integrado por hardhat para ejecutar en Docker.

Dockerfile

Si queremos crear todo el proyecto como una imagen acoplable, debemos crear y escribir el archivo acoplable y .dockerignore en el directorio raíz.

Dockerfile

FROM node:16.9 as builder
WORKDIR /app
COPY package.json .
COPY yarn.lock .
RUN yarn install

FROM node:16.9
WORKDIR /app
COPY --from=builder /app/ /app/
COPY . .
EXPOSE 8545
ENTRYPOINT ["yarn"]

.dockerignore

Tenga en cuenta que si el entorno es MacOS, debe ignorar yarn.lock, hay una dependencia en Linux que no se puede instalar. cual se olvida.

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# hardhat
artifacts/
cache/
deployments/
.idea/
.openzeppelin/

# macos
yarn.lock
.DS_Store

invalidación de la directiva package.json

  "scripts": {
    
    
    "start": "hardhat node",
    "dev": "hardhat node",
    "build": "hardhat compile",
    "test": "hardhat test",
    "deploy": "hardhat deploy",
    "lint": "eslint .",
    "lint:fix": "eslint --fix ."
  }

por fin

Puede consultar los tutoriales relacionados del tutorial para principiantes https://www.runoob.com/docker/docker-hello-world.html
para interactuar con el contenedor.
Los comandos comúnmente utilizados son los siguientes:

  • crear nueva imagen
    docker build -t <image_name>:<tag> .
  • Cree y ejecute un contenedor correspondiente a la instrucción a través de la imagen
    docker run -it --name <docker_name> <image_name>:<tag> <script command>
    Ejemplo:
    docker run -it --name node dao:v1 start

Supongo que te gusta

Origin blog.csdn.net/weixin_43742184/article/details/120968794
Recomendado
Clasificación