Networking of Ganache-cli with Truffle project in Drone CI with Docker

27 Views Asked by At

I have an issue deploying Ganache-cli and my smart contracts on it.

I use this drone.yml to create images of ganache and of truffle and deploy it in my containers :

kind: pipeline
type: docker
name: default

networks: 
  tmp:
    name: network

steps:

- name: docker-crypto
  image: plugins/docker
  settings:
    dockerfile: ganache/Dockerfile
    context: .
    registry: *********************
    repo: **********************************/fantomcoin
    username:
      from_secret: SECRET_REGISTRY_USERNAME
    password:
      from_secret: SECRET_REGISTRY_PASSWORD 


- name: docker-contracts
  image: plugins/docker
  settings:
    dockerfile: Dockerfile
    context: .
    registry: *************
    repo: *****************************/fantomcontracts
    username:
      from_secret: SECRET_REGISTRY_USERNAME
    password:
      from_secret: SECRET_REGISTRY_PASSWORD 

- name: deploy-crypto
  image: ******************************-dockerproxy-clientdrone:latest
  networks: 
    - tmp
  environment:
    IMAGENAME: ****************************fantomcoin:latest
    CONTAINERNAME: fantomcoin
    COMMAND: create
    OVERWRITE: true

  depends_on: [ docker-crypto ]
  

- name: deploy-contracts
  image: ************************************clientdrone:latest
  networks:
    - tmp
  environment:
    IMAGENAME: ****************************fantomcontracts:latest
    CONTAINERNAME: fantomcontracts
    COMMAND: create
    OVERWRITE: true
    
  depends_on: [ deploy-crypto,docker-contracts ]
  

These are the DockerFile of each images :

Image of fantomcoin

FROM node:alpine
COPY . /app
WORKDIR /app

RUN npm install -g [email protected]
RUN npm install [email protected]
RUN npm install -g truffle



ENTRYPOINT ["truffle", "deploy"]

Image of fantomcontracts

FROM node:alpine

WORKDIR /app

RUN npm install -g [email protected]
RUN npm install [email protected]
RUN npm install -g ganache-cli
EXPOSE 7545

ENTRYPOINT [ "ganache-cli", "-p", "7545" ]

And finally here is my truffle-config.js file for my truffle project :

/**
 * Use this file to configure your truffle project. It's seeded with some
 * common settings for different networks and features like migrations,
 * compilation and testing. Uncomment the ones you need or modify
 * them to suit your project as necessary.
 *
 * More information about configuration can be found at:
 *
 * https://trufflesuite.com/docs/truffle/reference/configuration
 *
 * To deploy via Infura you'll need a wallet provider (like @truffle/hdwallet-provider)
 * to sign your transactions before they're sent to a remote public node. Infura accounts
 * are available for free at: infura.io/register.
 *
 * You'll also need a mnemonic - the twelve word phrase the wallet uses to generate
 * public/private key pairs. If you're publishing your code to GitHub make sure you load this
 * phrase from a file you've .gitignored so it doesn't accidentally become public.
 *
 */

// require('dotenv').config();
// const mnemonic = process.env["MNEMONIC"];
// const infuraProjectId = process.env["INFURA_PROJECT_ID"];
 
// const HDWalletProvider = require('@truffle/hdwallet-provider');

module.exports = {
  /**
   * Networks define how you connect to your ethereum client and let you set the
   * defaults web3 uses to send transactions. If you don't specify one truffle
   * will spin up a development blockchain for you on port 9545 when you
   * run `develop` or `test`. You can ask a truffle command to use a specific
   * network from the command line, e.g
   *
   * $ truffle test --network <network-name>
   */

  networks: {
    // Useful for testing. The `development` name is special - truffle uses it by default
    // if it's defined here and no other network is specified at the command line.
    // You should run a client (like ganache, geth, or parity) in a separate terminal
    // tab if you use this network and you must also set the `host`, `port` and `network_id`
    // options below to some value.
    //
    development: {
     host: "fantomcoin",     // Localhost (default: none)
     port: 7545,            // Standard Ethereum port (default: none)
     network_id: "*",       // Any network (default: none)
    },
    
    goerli: {
      provider: () => new HDWalletProvider(mnemonic, `https://goerli.infura.io/v3/${infuraProjectId}`),
      network_id: 5,       // Goerli's id
      chain_id: 5
    }
  },

  // Set default mocha options here, use special reporters etc.
  mocha: {
    // timeout: 100000
  },

  // Configure your compilers
  compilers: {
    solc: {
      version: "0.8.13",      // Fetch exact version from solc-bin
    }
  }
};

My Problem is whenever I deploy these images, the truffle project cannot resolve host :

Couldn't connect to node http://fantomcoin:7545

Anybody faced the same issues ? Thank you :)

I tried to change the host on every sides as well as ports

0

There are 0 best solutions below