diff --git a/.gitignore b/.gitignore index c8e4586..0295cc0 100644 --- a/.gitignore +++ b/.gitignore @@ -7,9 +7,7 @@ out/ .ignore/ # Ignores development broadcast logs -!/broadcast -/broadcast/*/31337/ -/broadcast/**/dry-run/ +broadcast/ # Docs docs/ @@ -18,3 +16,6 @@ docs/ .env .env.* !.env.example + +# anvil-data +anvil_state.json diff --git a/Dockerfile b/Dockerfile index 54fa3db..4ec9257 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,9 +2,10 @@ FROM ghcr.io/foundry-rs/foundry:v1.7.1 WORKDIR /app -COPY . . +COPY --chown=foundry:foundry . . RUN git config --global --add safe.directory /app RUN forge build + RUN forge test \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 8d8612d..10ce582 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -4,8 +4,10 @@ services: container_name: ${ANVIL_CONTAINER_NAME} - command: + entrypoint: - anvil + + command: - --host - 0.0.0.0 - --port @@ -19,9 +21,20 @@ services: - --mnemonic - ${ANVIL_MNEMONIC} + # 自动加载/保存区块链状态 + - --state + - /var/data/anvil_state.json + + # 每 10 秒自动保存一次 + - --state-interval + - "10" + ports: - "${ANVIL_PORT}:8545" + volumes: + - anvil-data:/var/data + healthcheck: test: [ @@ -48,9 +61,15 @@ services: RPC_URL: ${RPC_URL} PRIVATE_KEY: ${PRIVATE_KEY} + entrypoint: + - forge + command: - script - script/Deploy.s.sol - --rpc-url - ${RPC_URL} - - --broadcast \ No newline at end of file + - --broadcast + +volumes: + anvil-data: \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 326ece9..e73a2eb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,8 +3,10 @@ services: image: ghcr.io/foundry-rs/foundry:v1.7.1 container_name: ${ANVIL_CONTAINER_NAME} - command: + entrypoint: - anvil + + command: - --host - 0.0.0.0 - --port @@ -18,11 +20,19 @@ services: - --mnemonic - ${ANVIL_MNEMONIC} + # 自动加载/保存区块链状态 + - --state + - /var/data/anvil_state.json + + # 每 10 秒自动保存一次 + - --state-interval + - "10" + ports: - "${ANVIL_PORT}:${ANVIL_PORT}" volumes: - - anvil-data:/anvil-data + - anvil-data:/var/data healthcheck: test: @@ -52,6 +62,9 @@ services: RPC_URL: ${RPC_URL} PRIVATE_KEY: ${PRIVATE_KEY} + entrypoint: + - forge + command: - script - script/Deploy.s.sol