NextCloud / Dockerfile
abcd118q's picture
Update Dockerfile
2b5ad1d verified
FROM hardcoreeng/account:latest AS account
FROM hardcoreeng/workspace:latest AS workspace
FROM hardcoreeng/transactor:latest AS transactor
FROM hardcoreeng/collaborator:latest AS collaborator
FROM hardcoreeng/front:latest AS front
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
ENV PORT=7860
# 1. System deps + MongoDB 7.0
RUN apt-get update && apt-get install -y curl gnupg supervisor nginx redis-server ca-certificates xz-utils && \
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpg && \
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list && \
apt-get update && apt-get install -y mongodb-org && \
rm -rf /var/lib/apt/lists/*
# 2. Node.js 20
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt-get install -y nodejs
# 3. CockroachDB
RUN curl -fsSL https://binaries.cockroachdb.com/cockroach-v23.1.10.linux-amd64.tgz | tar -xz && \
cp cockroach-v23.1.10.linux-amd64/cockroach /usr/local/bin/ && \
rm -rf cockroach-v23.1.10.linux-amd64
# 4. MinIO (required by Huly for file storage)
RUN curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio -o /usr/local/bin/minio && \
chmod +x /usr/local/bin/minio
# 5. Create directories
RUN mkdir -p /app/services/account /app/services/workspace /app/services/transactor \
/app/services/collaborator /app/services/front \
/data/mongodb /data/cockroach /data/minio
# 6. Copy services
COPY --from=account . /app/services/account
COPY --from=workspace . /app/services/workspace
COPY --from=transactor . /app/services/transactor
COPY --from=collaborator . /app/services/collaborator
COPY --from=front . /app/services/front
# 7. Config + permissions
COPY nginx.conf /etc/nginx/sites-available/default
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY entrypoint.sh /app/entrypoint.sh
COPY start-service.sh /app/start-service.sh
COPY inspect.sh /app/inspect.sh
RUN chmod +x /app/entrypoint.sh /app/start-service.sh /app/inspect.sh && \
useradd -m -u 1000 huly-user || true && \
chown -R 1000:1000 /app /data /var/lib/nginx /var/log/nginx /run
USER 1000
WORKDIR /app
EXPOSE 7860
CMD ["/app/entrypoint.sh"]