I'm attempting to set up AlloyDB Omni locally using a Dockerfile following the guidelines provided in the official Google documentation.
Below is the Dockerfile configuration I'm using:
FROM ubuntu:latest
# Install necessary packages and dependencies
RUN apt-get update && apt-get install -y \
software-properties-common \
sudo \
curl \
gnupg \
&& rm -rf /var/lib/apt/lists/*
# Add AlloyDB repository
RUN curl https://europe-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
RUN echo "deb [arch=amd64] https://europe-apt.pkg.dev/projects/alloydb-omni alloydb-omni-apt main" | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
# Update repositories and install alloydb-cli
RUN apt-get update && apt-get install -y alloydb-cli
However, during the Docker build process, the installation fails with the error:
Unable to locate package alloydb-cli
Upon further investigation, I found a log entry indicating:
Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'https://europe-apt.pkg.dev/projects/alloydb-omni alloydb-omni-apt InRelease' doesn't support architecture 'arm64'
It seems that AlloyDB Omni CLI supports the AMD64 architecture, but I'm working on an ARM architecture, causing this installation issue.
I'm seeking guidance or potential workarounds to overcome this architectural mismatch. My ultimate objective is to create a Dockerfile that can set up AlloyDB locally, similar to setting up other databases like PostgreSQL. However, since AlloyDB doesn't offer official Docker images, I'm attempting to build one myself and encountered this hurdle.
Any insights or suggestions on how to resolve this issue within the Dockerfile would be greatly appreciated. Thank you!
EDIT: Managed to build this using:
docker build --platform linux/amd64 -t alloydb-docker-in-docker .
Since alloyDB Omni requires Docker to be available, next step was to setup this image with Docker-Inside-Docker setup and added following lines to my dockerfile:
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu zesty stable"
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
RUN apt-get update && sudo apt-get -y install docker-ce
Next step was to run the image with privileged mode like so:
docker run --privileged -it --name alloydb-dind alloydb-docker-in-docker /bin/bash
When execing into the container alloyDB is available, so is Docker (docker ps and managed to actually run hello-world docker container inside the docker image. When running alloydb system-check it says docker not available (not sure what do they do to check docker installation).
At the end of the day decided to drop this local setup until we get official docker image from AlloyDB Omni prepared cuz this all seems a little bit too hacky to setup, especially with docker-inside-docker which is complicated as is to begin with.
You can replace
FROM ubuntu:latest
to