From a585ae6bca66db93ec047a33dfa01bd8695aacfd Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Mon, 11 Sep 2023 12:03:10 -0700 Subject: [PATCH 1/6] Remove unnecessary files from image (#481) --- Dockerfile | 2 -- dependencies | 9 +++++---- 2 files changed, 5 insertions(+), 6 deletions(-) mode change 100644 => 100755 dependencies diff --git a/Dockerfile b/Dockerfile index 44eb9c4a..9d5a0e16 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,10 +18,8 @@ EXPOSE 11625 EXPOSE 11626 ADD dependencies / -RUN ["chmod", "+x", "dependencies"] RUN /dependencies -RUN apt-get -y install libunwind8 postgresql curl sqlite libc++abi1-12 libc++1-12 COPY --from=stellar-core /usr/local/bin/stellar-core /usr/bin/stellar-core COPY --from=horizon /go/bin/horizon /usr/bin/stellar-horizon diff --git a/dependencies b/dependencies old mode 100644 new mode 100755 index 0a6a4633..70881509 --- a/dependencies +++ b/dependencies @@ -4,12 +4,13 @@ set -e # dependencies export DEBIAN_FRONTEND=noninteractive apt-get update -apt-get install -y curl wget git apt-transport-https \ - libpq-dev libsqlite3-dev libsasl2-dev \ +apt-get install -y curl apt-transport-https \ postgresql-client postgresql postgresql-contrib \ - sudo vim zlib1g-dev supervisor psmisc \ - nginx rsync jq netcat # Parsing stellar-core JSON for standalone network and checking core HTTP server + sudo supervisor psmisc \ + nginx rsync jq netcat \ + libunwind8 sqlite libc++abi1-12 libc++1-12 apt-get clean +rm -rf /var/lib/apt/lists/* chown -R www-data:www-data /var/lib/nginx From 69a1089eee9aaac4bafe4cbfc0639de18222db6a Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Tue, 12 Sep 2023 15:11:05 -0700 Subject: [PATCH 2/6] Add convenience targets to Makefile (#482) --- Makefile | 54 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index b459ff5a..76ad55b6 100644 --- a/Makefile +++ b/Makefile @@ -1,27 +1,51 @@ -__PHONY__: build build-deps +__PHONY__: run logs build build-deps build-deps-core build-deps-horizon build-deps-friendbot build-deps-soroban-rpc TAG?=dev CORE_REF?=master CORE_CONFIGURE_FLAGS?=--disable-tests -SOROBAN_TOOLS_REF?=main -GO_REF?=$(shell ./scripts/soroban_repo_to_horizon_repo.sh $(SOROBAN_TOOLS_REF)) +SOROBAN_RPC_REF?=main +HORIZON_REF?=$(shell ./scripts/soroban_repo_to_horizon_repo.sh $(SOROBAN_RPC_REF)) +FRIENDBOT_REF?=$(HORIZON_REF) + +run: + docker run --rm --name stellar -p 8000:8000 stellar/quickstart:$(TAG) --standalone --enable-soroban-rpc + +logs: + docker exec stellar /bin/sh -c 'tail -F /var/log/supervisor/*' + +build-latest: + $(MAKE) build TAG=latest \ + CORE_REF=v19.13.0 \ + HORIZON_REF=horizon-v2.26.1 \ + SOROBAN_RPC_REF=v0.4.0 + +build-testing: + $(MAKE) build TAG=testing \ + CORE_REF=v19.13.0 \ + HORIZON_REF=horizon-v2.26.1 \ + SOROBAN_RPC_REF=v0.4.0 + +build-soroban-dev: + $(MAKE) build TAG=soroban-dev \ + CORE_REF=soroban-preview-10-July20 \ + CORE_CONFIGURE_FLAGS='--disable-tests --enable-next-protocol-version-unsafe-for-production' \ + HORIZON_REF=soroban-v0.0.9.1 \ + SOROBAN_RPC_REF=v0.9.2 + +build: + $(MAKE) -j 4 build-deps + docker build -t stellar/quickstart:$(TAG) -f Dockerfile . --build-arg STELLAR_CORE_IMAGE_REF=stellar-core:$(CORE_REF) --build-arg HORIZON_IMAGE_REF=stellar-horizon:$(HORIZON_REF) --build-arg FRIENDBOT_IMAGE_REF=stellar-friendbot:$(FRIENDBOT_REF) --build-arg SOROBAN_RPC_IMAGE_REF=stellar-soroban-rpc:$(SOROBAN_RPC_REF) + +build-deps: build-deps-core build-deps-horizon build-deps-friendbot build-deps-soroban-rpc build-deps-core: - docker build -t stellar-core:$(TAG) -f docker/Dockerfile.testing https://github.com/stellar/stellar-core.git#$(CORE_REF) --build-arg BUILDKIT_CONTEXT_KEEP_GIT_DIR=true --build-arg CONFIGURE_FLAGS="$(CORE_CONFIGURE_FLAGS)" + docker build -t stellar-core:$(CORE_REF) -f docker/Dockerfile.testing https://github.com/stellar/stellar-core.git#$(CORE_REF) --build-arg BUILDKIT_CONTEXT_KEEP_GIT_DIR=true --build-arg CONFIGURE_FLAGS="$(CORE_CONFIGURE_FLAGS)" build-deps-horizon: - docker build -t stellar-horizon:$(TAG) -f Dockerfile.horizon --target builder . --build-arg REF="$(GO_REF)" + docker build -t stellar-horizon:$(HORIZON_REF) -f Dockerfile.horizon --target builder . --build-arg REF="$(HORIZON_REF)" build-deps-friendbot: - docker build -t stellar-friendbot:$(TAG) -f services/friendbot/docker/Dockerfile https://github.com/stellar/go.git#$(GO_REF) + docker build -t stellar-friendbot:$(FRIENDBOT_REF) -f services/friendbot/docker/Dockerfile https://github.com/stellar/go.git#$(FRIENDBOT_REF) build-deps-soroban-rpc: - docker build -t stellar-soroban-rpc:$(TAG) -f cmd/soroban-rpc/docker/Dockerfile --target build https://github.com/stellar/soroban-tools.git#$(SOROBAN_TOOLS_REF) --build-arg BUILDKIT_CONTEXT_KEEP_GIT_DIR=true - -# the build-deps have the four dependencies for the building of the -# dockers for core, horizon, friendbot and soroban-rpc. Specifying these as dependencies -# allow the make to run these in parallel when sufficient paralalism is specified using the -j option. -build-deps: build-deps-core build-deps-horizon build-deps-friendbot build-deps-soroban-rpc - -build: build-deps - docker build -t stellar/quickstart:$(TAG) -f Dockerfile . --build-arg STELLAR_CORE_IMAGE_REF=stellar-core:$(TAG) --build-arg HORIZON_IMAGE_REF=stellar-horizon:$(TAG) --build-arg FRIENDBOT_IMAGE_REF=stellar-friendbot:$(TAG) --build-arg SOROBAN_RPC_IMAGE_REF=stellar-soroban-rpc:$(TAG) + docker build -t stellar-soroban-rpc:$(SOROBAN_RPC_REF) -f cmd/soroban-rpc/docker/Dockerfile --target build https://github.com/stellar/soroban-tools.git#$(SOROBAN_RPC_REF) --build-arg BUILDKIT_CONTEXT_KEEP_GIT_DIR=true From 0f19bf50d8b11bca3c378c18363cc086f27c0ef6 Mon Sep 17 00:00:00 2001 From: Molly Karcher Date: Thu, 14 Sep 2023 19:38:12 -0400 Subject: [PATCH 3/6] Remove usages of LIMIT_TX_QUEUE_SOURCE_ACCOUNT (#485) --- futurenet/core/etc/stellar-core.cfg | 1 - 1 file changed, 1 deletion(-) diff --git a/futurenet/core/etc/stellar-core.cfg b/futurenet/core/etc/stellar-core.cfg index 63d9acf1..99632403 100644 --- a/futurenet/core/etc/stellar-core.cfg +++ b/futurenet/core/etc/stellar-core.cfg @@ -7,7 +7,6 @@ NETWORK_PASSPHRASE="__NETWORK__" KNOWN_CURSORS=["HORIZON"] DATABASE="postgresql://dbname=core host=localhost user=stellar password=__PGPASS__" UNSAFE_QUORUM=true -LIMIT_TX_QUEUE_SOURCE_ACCOUNT=true FAILURE_SAFETY=0 CATCHUP_RECENT=100 From 11330951bdd04ebb98f6266af41921ffea809655 Mon Sep 17 00:00:00 2001 From: shawn Date: Fri, 15 Sep 2023 12:19:14 -0700 Subject: [PATCH 4/6] update soroban-dev to use preview 11 versions (#483) --- .github/workflows/build-soroban-dev.yml | 16 ++++++++-------- Makefile | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-soroban-dev.yml b/.github/workflows/build-soroban-dev.yml index 34e3052a..774bdc2b 100644 --- a/.github/workflows/build-soroban-dev.yml +++ b/.github/workflows/build-soroban-dev.yml @@ -34,10 +34,10 @@ jobs: with: arch: amd64 tag: soroban-dev-amd64 - core_ref: soroban-preview-10-July20 - core_configure_flags: --disable-tests --enable-next-protocol-version-unsafe-for-production - go_ref: soroban-v0.0.9.1 - soroban_tools_ref: v0.9.2 + core_ref: ecb24df104c2453a00fa5097d2e879d7731b9596 + core_configure_flags: --disable-tests + go_ref: soroban-v1.0.0-rc + soroban_tools_ref: v20.0.0-rc1 test_matrix: | { "network": ["standalone"], @@ -52,11 +52,11 @@ jobs: with: arch: arm64 tag: soroban-dev-arm64 - core_ref: soroban-preview-10-July20 - core_configure_flags: --disable-tests --enable-next-protocol-version-unsafe-for-production + core_ref: ecb24df104c2453a00fa5097d2e879d7731b9596 + core_configure_flags: --disable-tests core_build_runner_type: ubuntu-latest-16-cores - go_ref: soroban-v0.0.9.1 - soroban_tools_ref: v0.9.2 + go_ref: soroban-v1.0.0-rc + soroban_tools_ref: v20.0.0-rc1 soroban_rpc_build_runner_type: ubuntu-latest-16-cores test_matrix: | { diff --git a/Makefile b/Makefile index 76ad55b6..85c34423 100644 --- a/Makefile +++ b/Makefile @@ -27,10 +27,10 @@ build-testing: build-soroban-dev: $(MAKE) build TAG=soroban-dev \ - CORE_REF=soroban-preview-10-July20 \ - CORE_CONFIGURE_FLAGS='--disable-tests --enable-next-protocol-version-unsafe-for-production' \ - HORIZON_REF=soroban-v0.0.9.1 \ - SOROBAN_RPC_REF=v0.9.2 + CORE_REF=v20.0.0rc1 \ + CORE_CONFIGURE_FLAGS='--disable-tests' \ + HORIZON_REF=soroban-v1.0.0-rc \ + SOROBAN_RPC_REF=v20.0.0-rc1 build: $(MAKE) -j 4 build-deps From a2bad54b2b133eef1b998b363e540b16507c87a0 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Fri, 15 Sep 2023 13:32:36 -0700 Subject: [PATCH 5/6] Remove instructions from readme about customizing files (#487) --- README.md | 34 +++++----------------------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 5d1a7f2d..bf35a534 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,11 @@ As part of launching, an ephemeral mode container will generate a random passwor ### Persistent mode -In comparison to ephemeral mode, persistent mode is more complicated to operate, but also more powerful. Persistent mode uses a mounted host volume, a directory on the host machine that is exposed to the running docker container, to store all database data as well as the configuration files used for running services. This allows you to manage and modify these files from the host system. +In comparison to ephemeral mode, persistent mode is more complicated to operate, but also more powerful. Persistent mode uses a mounted host volume, a directory on the host machine that is exposed to the running docker container, to store all database data as well as the configuration files used for running services. This allows you to manage and modify these files from the host system. + +Note that there is no guarantee that the organization of the files of the volume will remain consistent between releases of the image, that occur on every commit to the stellar/quickstart repository. At anytime new files may be added, old files removed, or dependencies and references between them changed. For this reason persistent mode is primarily intended for running short lived test instances for development. If consistency is required over any period of time use [image digest references] to pin to a specific build. + +[image digest references]: https://docs.docker.com/engine/reference/run/#imagedigest Starting a persistent mode container is the same as the ephemeral mode with one exception: @@ -187,34 +191,6 @@ Upon launching a persistent mode container for the first time, the launch script 2. Shut down the interactive container (using Ctrl-C). 3. Start a new container using the same host directory in the background. - -### Customizing configurations - -To customize the configurations that both stellar-core and horizon use, you must use persistent mode. The default configurations will be copied into the data directory upon launching a persistent mode container for the first time. Use the diagram below to learn about the various configuration files that can be customized. - -``` - /opt/stellar - |-- core - | `-- etc - | `-- stellar-core.cfg # Stellar core config - |-- horizon - | `-- etc - | `-- horizon.env # A shell script that exports horizon's config - |-- postgresql - | `-- etc - | |-- postgresql.conf # Postgresql root configuration file - | |-- pg_hba.conf # Postgresql client configuration file - | `-- pg_ident.conf # Postgresql user mapping file - `-- supervisor - `-- etc - | `-- supervisord.conf # Supervisord root configuration -``` - -It is recommended that you stop the container before editing any of these files, then restart the container after completing your customization. - -*NOTE:* Be wary of editing these files. It is possible to break the services started within this container with a bad edit. It's recommended that you learn about managing the operations of each of the services before customizing them, as you are taking responsibility for maintaining those services going forward. - - ## Regarding user accounts Managing UIDs between a docker container and a host volume can be complicated. At present, this image simply tries to create a UID that does not conflict with the host system by using a preset UID: 10011001. Currently there is no way to customize this value. All data produced in the host volume be owned by 10011001. If this UID value is inappropriate for your infrastructure we recommend you fork this project and do a find/replace operation to change UIDs. We may improve this story in the future if enough users request it. From f19b628df9087f02b03694ec5ddeb0c88420367a Mon Sep 17 00:00:00 2001 From: shawn Date: Fri, 15 Sep 2023 16:45:31 -0700 Subject: [PATCH 6/6] updated core ref on build-soroban-dev target (#491) * updated core ref on build-soroban-dev target * use v20.0.0rc1 for core ref --- .github/workflows/build-soroban-dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-soroban-dev.yml b/.github/workflows/build-soroban-dev.yml index 774bdc2b..98b7f3d7 100644 --- a/.github/workflows/build-soroban-dev.yml +++ b/.github/workflows/build-soroban-dev.yml @@ -34,7 +34,7 @@ jobs: with: arch: amd64 tag: soroban-dev-amd64 - core_ref: ecb24df104c2453a00fa5097d2e879d7731b9596 + core_ref: v20.0.0rc1 core_configure_flags: --disable-tests go_ref: soroban-v1.0.0-rc soroban_tools_ref: v20.0.0-rc1 @@ -52,7 +52,7 @@ jobs: with: arch: arm64 tag: soroban-dev-arm64 - core_ref: ecb24df104c2453a00fa5097d2e879d7731b9596 + core_ref: v20.0.0rc1 core_configure_flags: --disable-tests core_build_runner_type: ubuntu-latest-16-cores go_ref: soroban-v1.0.0-rc