From 70d24fc7eb1c3c9f1a8a96a31d8c66461c224dfd Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 4 Sep 2025 14:02:58 -0700 Subject: [PATCH] trying to build in a docker container --- environment.yml => conda_env_build.yml | 1 - conda_env_run.yml | 14 +++++++++++ .../Dockerfile.conda | 2 +- .../Dockerfile.conda_builder | 3 +-- ext/central-controller-docker/Dockerfile.new | 25 +++++++++++++++++++ 5 files changed, 41 insertions(+), 4 deletions(-) rename environment.yml => conda_env_build.yml (94%) create mode 100644 conda_env_run.yml create mode 100644 ext/central-controller-docker/Dockerfile.new diff --git a/environment.yml b/conda_env_build.yml similarity index 94% rename from environment.yml rename to conda_env_build.yml index 53d15b366..9a51cb7b7 100644 --- a/environment.yml +++ b/conda_env_build.yml @@ -18,4 +18,3 @@ dependencies: - conda-forge::libhiredis=1.3.0 - conda-forge::nlohmann_json=3.12.0 - conda-forge::jemalloc=5.3.0 - - conda-forge::postgresql=17.6 diff --git a/conda_env_run.yml b/conda_env_run.yml new file mode 100644 index 000000000..3ad8b606f --- /dev/null +++ b/conda_env_run.yml @@ -0,0 +1,14 @@ +name: central_controller +channels: + - conda-forge +dependencies: + - conda-forge::pkg-config + - conda-forge::libpqxx=7.10.1 + - conda-forge::libopentelemetry-cpp=1.21.0 + - conda-forge::google-cloud-cpp=2.38.0 + - conda-forge::libgoogle-cloud=2.38.0 + - conda-forge::inja=3.3.0 + - conda-forge::libhiredis=1.3.0 + - conda-forge::nlohmann_json=3.12.0 + - conda-forge::jemalloc=5.3.0 + - conda-forge::postgresql=17.6 diff --git a/ext/central-controller-docker/Dockerfile.conda b/ext/central-controller-docker/Dockerfile.conda index 5c7e5314b..7d1bbc64c 100644 --- a/ext/central-controller-docker/Dockerfile.conda +++ b/ext/central-controller-docker/Dockerfile.conda @@ -22,4 +22,4 @@ RUN echo "/opt/conda/envs/central_controller/lib" > /etc/ld.so.conf.d/conda-cent ADD ext/central-controller-docker/main-new.sh /main.sh RUN chmod a+x /main.sh -ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "central_controller", "/main.sh"] +ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "central_controller", "/bin/bash", "-c", "/main.sh"] diff --git a/ext/central-controller-docker/Dockerfile.conda_builder b/ext/central-controller-docker/Dockerfile.conda_builder index 131a90c69..42be3ab8b 100644 --- a/ext/central-controller-docker/Dockerfile.conda_builder +++ b/ext/central-controller-docker/Dockerfile.conda_builder @@ -2,10 +2,9 @@ FROM continuumio/miniconda3:25.3.1-1 LABEL maintainer="ZeroTier Inc." -ADD environment.yml /environment.yml +ADD conda_env_build.yml /environment.yml RUN conda env create -f /environment.yml && \ conda clean -a -y -ADD . /ZeroTierOne SHELL ["conda", "run", "--no-capture-output", "-n", "central_controller", "/bin/bash", "-c"] ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "central_controller", "/bin/bash"] \ No newline at end of file diff --git a/ext/central-controller-docker/Dockerfile.new b/ext/central-controller-docker/Dockerfile.new new file mode 100644 index 000000000..18245494c --- /dev/null +++ b/ext/central-controller-docker/Dockerfile.new @@ -0,0 +1,25 @@ +FROM us-central1-docker.pkg.dev/zerotier-421eb9/docker-images/controller_conda_builder:latest AS controller_conda_builder +ADD . /ZeroTierOne +WORKDIR /ZeroTierOne +SHELL ["conda", "run", "--no-capture-output", "-n", "central_controller", "/bin/bash", "-c"] +RUN cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DZT1_CENTRAL_CONTROLLER=1 && cmake --build build/ --target all -j4 --verbose + +FROM golang:bookworm AS go_base +RUN go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest + +FROM continuumio/miniconda3:25.3.1-1 +LABEL maintainer="ZeroTier Inc." +ADD conda_env_run.yml /environment.yml +RUN conda env create -f /environment.yml && \ + conda clean -a -y +SHELL ["conda", "run", "--no-capture-output", "-n", "central_controller", "/bin/bash", "-c"] +COPY --from=go_base /go/bin/migrate /usr/local/bin/migrate +COPY --from=controller_conda_builder /ZeroTierOne/build/zerotier-one /usr/local/bin/zerotier-one +COPY ext/central-controller-docker/migrations /migrations +RUN chmod a+x /usr/local/bin/zerotier-one +# RUN echo "/opt/conda/envs/central_controller/lib" > /etc/ld.so.conf.d/conda-central-controller.conf && \ +# echo "/opt/conda/envs/central_controller/`uname -m`-conda-linux-gnu/lib" > /etc/ld.so.conf.d/conda-central-controller-x64.conf && \ +# ldconfig +ADD ext/central-controller-docker/main-new.sh /main.sh +RUN chmod a+x /main.sh +ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "central_controller", "/bin/bash", "-c", "/main.sh"] \ No newline at end of file