Deployment
- Starting the local replica
- Deploying to the local replica
- Interacting with your canister
- Deploying to mainnet
- Common deployment issues
There are two main Internet Computer (IC) environments that you will generally interact with: the local replica and mainnet.
When developing on your local machine, our recommended flow is to start up a local replica in your project's root directoy and then deploy to it for local testing.
Starting the local replica
Open a terminal and navigate to your project's root directory:
dfx start
Alternatively you can start the local replica as a background process:
dfx start --background
If you want to stop a local replica running in the background:
dfx stop
If you ever see this error after dfx stop
:
Error: Failed to kill all processes. Remaining: 627221 626923 627260
Then try this:
sudo kill -9 627221
sudo kill -9 626923
sudo kill -9 627260
If your replica starts behaving strangely, we recommend starting the replica clean, which will clean the dfx
state of your project:
dfx start --clean
Deploying to the local replica
To deploy all canisters defined in your dfx.json
:
dfx deploy
To deploy an individual canister:
dfx deploy canister_name
Interacting with your canister
As a developer you can generally interact with your canister in three ways:
dfx command line
You can see a more complete reference here.
The commands you are likely to use most frequently are:
# assume a canister named my_canister
# builds and deploys all canisters specified in dfx.json
dfx deploy
# builds all canisters specified in dfx.json
dfx build
# builds and deploys my_canister
dfx deploy my_canister
# builds my_canister
dfx build my_canister
# removes the Wasm binary and state of my_canister
dfx uninstall-code my_canister
# calls the methodName method on my_canister with a string argument
dfx canister call my_canister methodName '("This is a Candid string argument")'
dfx web UI
After deploying your canister, you should see output similar to the following in your terminal:
Deployed canisters.
URLs:
Backend canister via Candid interface:
my_canister: http://127.0.0.1:8000/?canisterId=ryjl3-tyaaa-aaaaa-aaaba-cai&id=rrkah-fqaaa-aaaaa-aaaaq-cai
Open up http://127.0.0.1:8000/?canisterId=ryjl3-tyaaa-aaaaa-aaaba-cai&id=rrkah-fqaaa-aaaaa-aaaaq-cai to access the web UI.
@dfinity/agent
@dfinity/agent is the TypeScript/JavaScript client library for interacting with canisters on the IC. If you are building a client web application, this is probably what you'll want to use.
There are other agents for other languages as well:
Deploying to mainnet
Assuming you are setup with cycles, then you are ready to deploy to mainnet.
To deploy all canisters defined in your dfx.json:
dfx deploy --network ic
To deploy an individual canister:
dfx deploy --network ic canister_name
Common deployment issues
If you run into an error during deployment, try the following:
- Ensure that you have followed the instructions correctly in the installation chapter, especially noting the build dependencies
- Start the whole deployment process from scratch by running the following commands:
dfx stop
or simply terminatedfx
in your terminal,dfx start --clean
,npx azle clean
,dfx deploy
- Look for more error output by adding the
AZLE_VERBOSE=true
environment variable into the same process that runsdfx deploy
- Look for errors in each of the files in
~/.config/azle/rust/[rust_version]/logs
- Reach out in the Discord channel