From cf3fb85c0ec4f3cb634f063bb3d554fbc5bc6518 Mon Sep 17 00:00:00 2001 From: Mihail Dobrev Date: Mon, 3 Feb 2025 20:51:40 +0200 Subject: [PATCH 1/5] feat!: make docker paths the same as in the node images --- Dockerfile | 51 ++++++++++++++++------------------ config/config.exs | 2 +- docker-compose-dev-testnet.yml | 14 +++++----- docker-compose-dev.yml | 14 +++++----- docker-compose-hc.yml | 18 ++++++------ docker-compose-test.yml | 2 +- docker-compose.yml | 10 +++---- 7 files changed, 54 insertions(+), 57 deletions(-) diff --git a/Dockerfile b/Dockerfile index 86e70eecf..8e32287f8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -35,30 +35,26 @@ RUN mkdir -p /home/aeternity/node COPY ./docker/aeternity.yaml /home/aeternity/aeternity.yaml # Set build git revision -RUN mkdir /home/aeternity/node/ae_mdw +RUN mkdir /home/aeternity/ae_mdw COPY .git .git -RUN BUILD_REV="$(git log -1 --format=%h)" && echo $BUILD_REV > /home/aeternity/node/ae_mdw/AEMDW_REVISION +RUN BUILD_REV="$(git log -1 --format=%h)" && echo $BUILD_REV > /home/aeternity/ae_mdw/AEMDW_REVISION WORKDIR /home/aeternity/node # Download, and unzip latest aeternity release archive ARG DEV_MODE="false" ENV DEV_MODE=${DEV_MODE} -ENV NODEROOT=/home/aeternity/node/local -ENV NODEDIR=/home/aeternity/node/local/rel/aeternity -RUN mkdir -p ./local/rel/aeternity/data/mnesia +ENV NODEROOT=/home/aeternity/node/ - -COPY --from=aeternity /home/aeternity/node ./local/rel/aeternity -RUN chmod +x ${NODEDIR}/bin/aeternity -RUN cp -r ./local/rel/aeternity/lib local/ -RUN sed -i 's/{max_skip_body_length, [0-9]\+}/{max_skip_body_length, 10240}/g' ${NODEDIR}/releases/*/sys.config +COPY --from=aeternity /home/aeternity/node ./ +RUN chmod +x ${NODEROOT}/bin/aeternity +RUN sed -i 's/{max_skip_body_length, [0-9]\+}/{max_skip_body_length, 10240}/g' ${NODEROOT}/releases/*/sys.config # Check if the config file is OK -RUN ${NODEDIR}/bin/aeternity check_config /home/aeternity/aeternity.yaml +RUN ${NODEROOT}/bin/aeternity check_config /home/aeternity/aeternity.yaml # prepare build dir -WORKDIR /home/aeternity/node/ae_mdw +WORKDIR /home/aeternity/ae_mdw # This is necessary for QEMU build, otherwise it crashes when building for another platform: https://elixirforum.com/t/mix-deps-get-memory-explosion-when-doing-cross-platform-docker-build/57157 ENV ERL_FLAGS="+JMsingle true" @@ -96,7 +92,7 @@ RUN mix compile COPY config/runtime.exs config/ # Generate swagger V3 file -RUN cp /home/aeternity/node/local/lib/aehttp-*/priv/oas3.yaml docs/swagger_v3/node_oas3.yaml +RUN cp /home/aeternity/node/lib/aehttp-*/priv/oas3.yaml docs/swagger_v3/node_oas3.yaml RUN mix run --no-start -e 'IO.puts(Mix.Project.config[:version])' >AEMDW_VERSION ARG PATH_PREFIX RUN scripts/swagger-docs.py @@ -126,21 +122,22 @@ RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 -ENV NODEROOT=/home/aeternity/node/local -ENV NODEDIR=/home/aeternity/node/local/rel/aeternity - -WORKDIR "/home/aeternity/node" +ENV NODEROOT=/home/aeternity/node/ # set runner ENV ARG MIX_ENV="prod" ENV MIX_ENV=${MIX_ENV} -ENV AETERNITY_CONFIG=/home/aeternity/aeternity.yaml +ENV AETERNITY_CONFIG=/home/aeternity/.aeternity/aeternity/aeternity.yaml # Only copy the final release from the build stage -COPY --from=builder /home/aeternity/node/ae_mdw/_build/${MIX_ENV}/rel/ae_mdw ./ -COPY --from=builder /home/aeternity/node/local ./local -COPY ./docker/aeternity.yaml /home/aeternity/aeternity.yaml -COPY ./docker/aeternity-dev.yaml /home/aeternity/aeternity-dev.yaml +WORKDIR "/home/aeternity/node" +COPY --from=builder /home/aeternity/node/ ./ + +WORKDIR "/home/aeternity/ae_mdw" +COPY --from=builder /home/aeternity/ae_mdw/_build/${MIX_ENV}/rel/ae_mdw ./ + +COPY ./docker/aeternity.yaml /home/aeternity/.aeternity/aeternity/aeternity.yaml +COPY ./docker/aeternity-dev.yaml /home/aeternity/.aeternity/aeternity/aeternity-dev.yaml COPY ./docker/healthcheck.sh /home/aeternity/healthcheck.sh COPY --from=aeternity /usr/local/lib/librocksdb.so.7.10.2 /usr/local/lib/ @@ -153,8 +150,8 @@ RUN chmod +x /home/aeternity/healthcheck.sh # Create data directories in advance so that volumes can be mounted in there # see https://github.com/moby/moby/issues/2259 for more about this nasty hack -RUN mkdir -p ./local/rel/aeternity/data/mnesia \ - && mkdir -p ./local/rel/aeternity/data/mdw.db +RUN mkdir -p /home/aeternity/node/data/mnesia \ + && mkdir -p /home/aeternity/node/data/mdw.db RUN useradd --uid 1000 --shell /bin/bash aeternity \ && chown -R aeternity:aeternity /home/aeternity @@ -163,8 +160,8 @@ ARG USER=aeternity USER ${USER} # Clear old logs -RUN rm -rf /home/aeternity/node/ae_mdw/log -RUN mkdir -p /home/aeternity/node/ae_mdw/log +RUN rm -rf /home/aeternity/ae_mdw/log +RUN mkdir -p /home/aeternity/ae_mdw/log HEALTHCHECK --start-period=10s --start-interval=2s --timeout=2s CMD /home/aeternity/healthcheck.sh -CMD ["/home/aeternity/node/bin/server"] +CMD ["/home/aeternity/ae_mdw/bin/server"] diff --git a/config/config.exs b/config/config.exs index ff9017ada..e4639f292 100644 --- a/config/config.exs +++ b/config/config.exs @@ -9,7 +9,7 @@ config :esbuild, version: "0.8.2" config :ae_mdw, AeMdw.Db.RocksDb, - data_dir: "#{node_root}/rel/aeternity/data/mdw.db", + data_dir: "#{node_root}/data/mdw.db", drop_tables: [ Model.AsyncTasks, Model.Aex9Balance, diff --git a/docker-compose-dev-testnet.yml b/docker-compose-dev-testnet.yml index 90dde3892..c727570e9 100644 --- a/docker-compose-dev-testnet.yml +++ b/docker-compose-dev-testnet.yml @@ -16,16 +16,16 @@ services: - "3013:3013" #Node's default external API port - "3014:3014" #Node's channels default websocket port volumes: - - ${PWD}/data_testnet/mnesia:/home/aeternity/node/local/rel/aeternity/data/mnesia - - ${PWD}/data_testnet/mdw.db:/home/aeternity/node/local/rel/aeternity/data/mdw.db - - ${PWD}/docker/aeternity_testnet.yaml:/home/aeternity/aeternity.yaml - - ${PWD}/docker/aeternity-dev.yaml:/home/aeternity/aeternity-dev.yaml - - ${PWD}/docker/accounts.json:/home/aeternity/node/local/rel/aeternity/data/aecore/.genesis/accounts_test.json - - ${PWD}/priv:/home/aeternity/node/ae_mdw/priv + - ${PWD}/data_testnet/mnesia:/home/aeternity/node/data/mnesia + - ${PWD}/data_testnet/mdw.db:/home/aeternity/node/data/mdw.db + - ${PWD}/docker/aeternity_testnet.yaml:/home/aeternity/.aeternity/aeternity/aeternity.yaml + - ${PWD}/docker/aeternity-dev.yaml:/home/aeternity/.aeternity/aeternity/aeternity-dev.yaml + - ${PWD}/docker/accounts.json:/home/aeternity/node/data/aecore/.genesis/accounts_test.json + - ${PWD}/priv:/home/aeternity/ae_mdw/priv - ${PWD}:/app - ${PWD}/docker/gitconfig:/root/.gitconfig environment: - - AETERNITY_CONFIG=${AETERNITY_CONFIG:-/home/aeternity/aeternity.yaml} + - AETERNITY_CONFIG=${AETERNITY_CONFIG:-/home/aeternity/.aeternity/aeternity/aeternity.yaml} networks: ae_mdw_net_testnet: aliases: diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 8698f7196..5d53cd667 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -16,18 +16,18 @@ services: - "3013:3013" #Node's default external API port - "3014:3014" #Node's channels default websocket port volumes: - - ${PWD}/data/mnesia:/home/aeternity/node/local/rel/aeternity/data/mnesia - - ${PWD}/data/mdw.db:/home/aeternity/node/local/rel/aeternity/data/mdw.db - - ${PWD}/docker/aeternity.yaml:/home/aeternity/aeternity.yaml - - ${PWD}/docker/aeternity-dev.yaml:/home/aeternity/aeternity-dev.yaml - - ${PWD}/docker/accounts.json:/home/aeternity/node/local/rel/aeternity/data/aecore/.genesis/accounts_test.json - - ${PWD}/priv:/home/aeternity/node/ae_mdw/priv + - ${PWD}/data/mnesia:/home/aeternity/node/data/mnesia + - ${PWD}/data/mdw.db:/home/aeternity/node/data/mdw.db + - ${PWD}/docker/aeternity.yaml:/home/aeternity/.aeternity/aeternity/aeternity.yaml + - ${PWD}/docker/aeternity-dev.yaml:/home/aeternity/.aeternity/aeternity/aeternity-dev.yaml + - ${PWD}/docker/accounts.json:/home/aeternity/node/data/aecore/.genesis/accounts_test.json + - ${PWD}/priv:/home/aeternity/ae_mdw/priv - ${PWD}:/app - ${PWD}/docker/gitconfig:/root/.gitconfig - ${PWD}/.bash_history:/root/.bash_history - ${PWD}/.erlang_history:/root/.erlang_history environment: - - AETERNITY_CONFIG=${AETERNITY_CONFIG:-/home/aeternity/aeternity.yaml} + - AETERNITY_CONFIG=${AETERNITY_CONFIG:-/home/aeternity/.aeternity/aeternity/aeternity.yaml} - HIST_FILE=/root/.bash_history - ELIXIR_ERL_OPTIONS=-kernel shell_history enabled -kernel shell_history_path '.erlang_history' - ENABLE_CONSOLE_LOG=true diff --git a/docker-compose-hc.yml b/docker-compose-hc.yml index c3021ebd2..1d061f045 100644 --- a/docker-compose-hc.yml +++ b/docker-compose-hc.yml @@ -17,18 +17,18 @@ services: - "3013:3013" #Node's default external API port - "3014:3014" #Node's channels default websocket port volumes: - - ${PWD}/data_hc/mnesia:/home/aeternity/node/local/rel/aeternity/data/mnesia - - ${PWD}/data_hc/mdw.db:/home/aeternity/node/local/rel/aeternity/data/mdw.db - - ${PWD}/hyperchain/aeternity.yaml:/home/aeternity/aeternity.yaml - - ${PWD}/docker/aeternity-dev.yaml:/home/aeternity/aeternity-dev.yaml - - ${PWD}/docker/accounts.json:/home/aeternity/node/local/rel/aeternity/data/aecore/.genesis/accounts_test.json - - ${PWD}/hyperchains/accounts.json:/home/aeternity/node/local/rel/aeternity/data/aecore/.ceres/hc_devnet_accounts.json - - ${PWD}/hyperchains/contracts.json:/home/aeternity/node/local/rel/aeternity/data/aecore/.ceres/hc_devnet_contracts.json - - ${PWD}/priv:/home/aeternity/node/ae_mdw/priv + - ${PWD}/data_hc/mnesia:/home/aeternity/node/data/mnesia + - ${PWD}/data_hc/mdw.db:/home/aeternity/node/data/mdw.db + - ${PWD}/hyperchain/aeternity.yaml:/home/aeternity/.aeternity/aeternity/aeternity.yaml + - ${PWD}/docker/aeternity-dev.yaml:/home/aeternity/.aeternity/aeternity/aeternity-dev.yaml + - ${PWD}/docker/accounts.json:/home/aeternity/node/data/aecore/.genesis/accounts_test.json + - ${PWD}/hyperchains/accounts.json:/home/aeternity/node/dataa/aecore/.ceres/hc_devnet_accounts.json + - ${PWD}/hyperchains/contracts.json:/home/aeternity/node/data/aecore/.ceres/hc_devnet_contracts.json + - ${PWD}/priv:/home/aeternity/ae_mdw/priv - ${PWD}:/app - ${PWD}/docker/gitconfig:/root/.gitconfig environment: - - AETERNITY_CONFIG=${AETERNITY_CONFIG:-/home/aeternity/aeternity.yaml} + - AETERNITY_CONFIG=${AETERNITY_CONFIG:-/home/aeternity/.aeternity/aeternity/aeternity.yaml} networks: ae_mdw_net_hc: aliases: diff --git a/docker-compose-test.yml b/docker-compose-test.yml index eb94515a6..dc1456c7d 100644 --- a/docker-compose-test.yml +++ b/docker-compose-test.yml @@ -13,4 +13,4 @@ services: volumes: - ${PWD}:/app environment: - AETERNITY_CONFIG: /home/aeternity/aeternity.yaml + AETERNITY_CONFIG: /home/aeternity/.aeternity/aeternity/aeternity.yaml diff --git a/docker-compose.yml b/docker-compose.yml index 5357cca8b..3cfa4dcf1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,10 +8,10 @@ services: - "3013:3013" #Node's default external API port - "3014:3014" #Node's channels default websocket port volumes: - - ${PWD}/data/mnesia:/home/aeternity/node/local/rel/aeternity/data/mnesia - - ${PWD}/data/mdw.db:/home/aeternity/node/local/rel/aeternity/data/mdw.db - - ${PWD}/log:/home/aeternity/node/ae_mdw/log + - ${PWD}/data/mnesia:/home/aeternity/node/data/mnesia + - ${PWD}/data/mdw.db:/home/aeternity/node/data/mdw.db + - ${PWD}/log:/home/aeternity/ae_mdw/log # uncomment for custom node setup - #- ${HOME}/aeternity.yaml:/home/aeternity/aeternity.yaml + #- ${HOME}/aeternity.yaml:/home/aeternity/.aeternity/aeternity/aeternity.yaml environment: - - AETERNITY_CONFIG=/home/aeternity/aeternity.yaml + - AETERNITY_CONFIG=${AETERNITY_CONFIG:-/home/aeternity/.aeternity/aeternity/aeternity.yaml} From 3155a89ab603896116a5c91af447dd26548fadc8 Mon Sep 17 00:00:00 2001 From: Mihail Dobrev Date: Tue, 4 Feb 2025 13:50:00 +0200 Subject: [PATCH 2/5] fix: update node setup gh action --- .github/actions/node-setup/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/node-setup/action.yml b/.github/actions/node-setup/action.yml index 159294899..21c66b011 100644 --- a/.github/actions/node-setup/action.yml +++ b/.github/actions/node-setup/action.yml @@ -8,4 +8,4 @@ runs: shell: bash run: | curl -L https://github.com/aeternity/aeternity/releases/download/v7.3.0-rc3/aeternity-v7.3.0-rc3-ubuntu-x86_64.tar.gz -o aeternity.tgz\ - && mkdir -p ${NODEROOT}/rel/aeternity && tar xf aeternity.tgz -C ${NODEROOT}/rel/aeternity && cp -rf ${NODEROOT}/rel/aeternity/lib/ ${NODEROOT} + && mkdir -p ${NODEROOT} && tar xf aeternity.tgz -C ${NODEROOT} && cp -rf ${NODEROOT}/lib/ ${NODEROOT} From b8f4414eba5069b6db7e7b43da0004ec5b684128 Mon Sep 17 00:00:00 2001 From: Mihail Dobrev Date: Tue, 4 Feb 2025 13:55:07 +0200 Subject: [PATCH 3/5] fix: remove unneded cp from action --- .github/actions/node-setup/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/node-setup/action.yml b/.github/actions/node-setup/action.yml index 21c66b011..d645dc5da 100644 --- a/.github/actions/node-setup/action.yml +++ b/.github/actions/node-setup/action.yml @@ -8,4 +8,4 @@ runs: shell: bash run: | curl -L https://github.com/aeternity/aeternity/releases/download/v7.3.0-rc3/aeternity-v7.3.0-rc3-ubuntu-x86_64.tar.gz -o aeternity.tgz\ - && mkdir -p ${NODEROOT} && tar xf aeternity.tgz -C ${NODEROOT} && cp -rf ${NODEROOT}/lib/ ${NODEROOT} + && mkdir -p ${NODEROOT} && tar xf aeternity.tgz -C ${NODEROOT} From 0a97ce03c6e5e88d978b5ff0562389bc2a471e15 Mon Sep 17 00:00:00 2001 From: Mihail Dobrev Date: Tue, 4 Feb 2025 15:56:00 +0200 Subject: [PATCH 4/5] chore: make readme point to the correct location --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ee0a07214..910cc54ce 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ chown -R 1000 data In case you want to setup different accounts on testnet with initial balance you can add this volume to `docker-compose-dev.yml`: -`- ${PWD}/accounts_test.json:/home/aeternity/node/local/rel/aeternity/data/aecore/.genesis/accounts_test.json` +`- ${PWD}/accounts_test.json:/home/aeternity/node/data/aecore/.genesis/accounts_test.json` An example of `accounts_test.json` is: From 08472902fa4bd897acee48da2626bbfdfa0f83b2 Mon Sep 17 00:00:00 2001 From: Mihail Dobrev Date: Wed, 5 Feb 2025 10:14:58 +0200 Subject: [PATCH 5/5] fix: use original ae_plugin and remove prod logger override --- config/prod.exs | 5 ----- mix.exs | 2 +- mix.lock | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/config/prod.exs b/config/prod.exs index 90cf91f37..d300a5c05 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -1,8 +1,3 @@ import Config config :ae_mdw, build_revision: String.trim(File.read!("AEMDW_REVISION")) - -# Logging -config :logger, - level: :info, - backends: [{LoggerFileBackend, :info}] diff --git a/mix.exs b/mix.exs index e604243cb..651b661dc 100644 --- a/mix.exs +++ b/mix.exs @@ -145,7 +145,7 @@ defmodule AeMdw.MixProject do # Specifies your project dependencies. defp deps() do [ - {:ae_plugin, github: "aeternity/ae_plugin", ref: "cacff2c"}, + {:ae_plugin, github: "aeternity/ae_plugin", ref: "82c6372"}, {:stream_split, "~> 0.1.5"}, {:ex2ms, "~> 1.6.0"}, {:logger_file_backend, "~> 0.0.11"}, diff --git a/mix.lock b/mix.lock index 197953d43..4040c9564 100644 --- a/mix.lock +++ b/mix.lock @@ -1,5 +1,5 @@ %{ - "ae_plugin": {:git, "https://github.com/aeternity/ae_plugin.git", "cacff2ca9eb14a1b4cd3be08dc93a10e4194717d", [ref: "cacff2c"]}, + "ae_plugin": {:git, "https://github.com/aeternity/ae_plugin.git", "82c6372e33f5ab57a56e803d7ab1ab265fc0f128", [ref: "82c6372"]}, "benchee": {:hex, :benchee, "1.0.1", "66b211f9bfd84bd97e6d1beaddf8fc2312aaabe192f776e8931cb0c16f53a521", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}], "hexpm", "3ad58ae787e9c7c94dd7ceda3b587ec2c64604563e049b2a0e8baafae832addb"}, "blankable": {:hex, :blankable, "1.0.0", "89ab564a63c55af117e115144e3b3b57eb53ad43ba0f15553357eb283e0ed425", [:mix], [], "hexpm", "7cf11aac0e44f4eedbee0c15c1d37d94c090cb72a8d9fddf9f7aec30f9278899"}, "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},