diff --git a/backend.ai-manager.Dockerfile b/backend.ai-manager.Dockerfile new file mode 100644 index 00000000000..4a6f347f097 --- /dev/null +++ b/backend.ai-manager.Dockerfile @@ -0,0 +1,27 @@ +ARG PYTHON_VERSION +FROM python:${PYTHON_VERSION} AS builder +ARG PKGVER +COPY dist /dist +RUN pip wheel --wheel-dir=/wheels --no-cache-dir backend.ai-manager==${PKGVER} --find-links=/dist + +FROM python:${PYTHON_VERSION} +COPY --from=builder /wheels /wheels +RUN mkdir -p /root/.ssh +RUN apt-get update && apt-get install -y vim && rm -rf /var/lib/apt/lists/* +RUN pip install --no-cache-dir /wheels/*.whl + +# Create necessary directories +RUN mkdir -p /tmp/backend.ai/ipc /var/log/backend.ai /etc/backend.ai /app/fixtures + +# Set working directory +WORKDIR /app + +# Copy entrypoint script +COPY entrypoint.sh /app/entrypoint.sh +RUN chmod +x /app/entrypoint.sh + +# Expose the manager service port +EXPOSE 8091 + +# Set the default command to run the entrypoint script +CMD ["/app/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 00000000000..9904dd18939 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,27 @@ +#!/bin/bash +set -e + +echo "=== Backend.AI Manager Container starting ===" + +# fixtures directory creation (default path structure) +mkdir -p /app/fixtures/manager + +# RPC keypair not found. Generating... +if [ ! -f "/app/fixtures/manager/manager.key" ] || [ ! -f "/app/fixtures/manager/manager.key_secret" ]; then + echo "RPC keypair not found. Generating..." + python -m ai.backend.manager.cli generate-rpc-keypair /app/fixtures/manager 'manager' + echo "RPC keypair generated successfully." + echo " - Public Key: /app/fixtures/manager/manager.key" + echo " - Secret Key: /app/fixtures/manager/manager.key_secret" +else + echo "RPC keypair already exists." +fi + +# Log directory creation +mkdir -p /var/log/backend.ai + +# IPC directory creation +mkdir -p /tmp/backend.ai/ipc + +echo "=== Manager server starting ===" +exec python -m ai.backend.manager.server --config /etc/backend.ai/manager.toml