| umoci raw add-layer --image /home/buildd/rockcraft-ubuntu-f769691888dfc504c4977dc89c90edab/images/ubuntu:rockcraft-base /home/buildd/rockcraft-ubuntu-f769691888dfc504c4977dc89c90edab/images/.temp_layer.9621.tar --tag 26.04 |
| umoci config --image /home/buildd/rockcraft-ubuntu-f769691888dfc504c4977dc89c90edab/images/ubuntu:26.04 --clear=config.entrypoint --clear=config.cmd |
| umoci config --image /home/buildd/rockcraft-ubuntu-f769691888dfc504c4977dc89c90edab/images/ubuntu:26.04 --clear=config.cmd --config.cmd /bin/bash |
| umoci config --image /home/buildd/rockcraft-ubuntu-f769691888dfc504c4977dc89c90edab/images/ubuntu:26.04 --config.env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| umoci config --image /home/buildd/rockcraft-ubuntu-f769691888dfc504c4977dc89c90edab/images/ubuntu:26.04 --clear=config.labels --config.label org.opencontainers.image.version=26.04 --config.label org.opencontainers.image.title=ubuntu --config.label org.opencontainers.image.created=2026-10-06T21:25:30.040262+00:00 --config.label org.opencontainers.image.description=The Ubuntu container image maintained by Canonical
Ubuntu is a Debian-based Linux operating system that runs from the desktop to the cloud, to all your internet connected things.
It is the world's most popular operating system across public clouds and OpenStack clouds.
It is the number one platform for containers; from Docker to Kubernetes to LXD, Ubuntu can run your containers at scale.
Fast, secure and simple, Ubuntu powers millions of PCs worldwide.
|
| umoci config --image /home/buildd/rockcraft-ubuntu-f769691888dfc504c4977dc89c90edab/images/ubuntu:26.04 --clear=manifest.annotations --manifest.annotation org.opencontainers.image.version=26.04 --manifest.annotation org.opencontainers.image.title=ubuntu --manifest.annotation org.opencontainers.image.created=2026-10-06T21:25:30.040262+00:00 --manifest.annotation org.opencontainers.image.description=The Ubuntu container image maintained by Canonical
Ubuntu is a Debian-based Linux operating system that runs from the desktop to the cloud, to all your internet connected things.
It is the world's most popular operating system across public clouds and OpenStack clouds.
It is the number one platform for containers; from Docker to Kubernetes to LXD, Ubuntu can run your containers at scale.
Fast, secure and simple, Ubuntu powers millions of PCs worldwide.
|
| umoci raw add-layer --image /home/buildd/rockcraft-ubuntu-f769691888dfc504c4977dc89c90edab/images/ubuntu:26.04 /home/buildd/rockcraft-ubuntu-f769691888dfc504c4977dc89c90edab/images/.temp_layer.control_data.9621.tar |
| ENV DEBIAN_FRONTEND=noninteractive |
| RUN /bin/sh -c echo 'Acquire::http {No-Cache=True;};' > /etc/apt/apt.conf.d/no-cache && echo 'APT::Install-Recommends "0"; APT::Install-Suggests "0";' > /etc/apt/apt.conf.d/01norecommend && echo 'Dir::Cache { srcpkgcache ""; pkgcache ""; }' > /etc/apt/apt.conf.d/02nocache && echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/02compress-indexes # buildkit |
| SHELL [/bin/bash -c] |
| RUN /bin/bash -c apt -y update && apt -y --no-install-recommends install ca-certificates curl dirmngr git gpg gpg-agent wget unzip zip software-properties-common sudo cron dos2unix tini attr && curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg && echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list && apt -y update && apt -y --no-install-recommends install supervisor dumb-init iputils-ping telnet netcat-openbsd lsof net-tools openssl dnsutils rsync bind9-host crudini xmlstarlet moreutils jq pwgen swaks nano ne pkg-config openssh-client uuid less zip file shared-mime-info nginx-full sqlite3 mysql-client redis-tools postgresql-client ldap-utils gettext imagemagick graphicsmagick libcurl4 locales libmagic1 && rm -rf /var/cache/apt /var/lib/apt/lists # buildkit |
| RUN /bin/bash -c curl -L https://github.com/tianon/gosu/releases/download/1.19/gosu-amd64 -o /usr/local/bin/gosu && chmod +x /usr/local/bin/gosu # buildkit |
| ARG YQVERSION=4.53.6 |
| RUN |1 YQVERSION=4.53.6 /bin/bash -c curl -sL https://github.com/mikefarah/yq/releases/download/v${YQVERSION}/yq_linux_amd64 -o /usr/bin/yq && chmod +x /usr/bin/yq # buildkit |
| RUN |1 YQVERSION=4.53.6 /bin/bash -c userdel --remove ubuntu && adduser --uid 1000 --disabled-login --gecos 'Cloudron' cloudron && passwd -d cloudron # buildkit |
| RUN |1 YQVERSION=4.53.6 /bin/bash -c addgroup --gid 500 --system media && usermod -a -G media cloudron && usermod -a -G media www-data # buildkit |
| RUN |1 YQVERSION=4.53.6 /bin/bash -c echo "set noswapfile" >> /root/.vimrc && gosu cloudron:cloudron bash -c 'echo "set noswapfile" >> /home/cloudron/.vimrc' && echo "unset historylog" >> /etc/nanorc # buildkit |
| RUN |1 YQVERSION=4.53.6 /bin/bash -c sed -e 's,^# en_US.UTF-8 UTF-8,en_US.UTF-8 UTF-8,' -i /etc/locale.gen && locale-gen && update-locale LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 LC_ALL=en_US.UTF-8 # buildkit |
| RUN |1 YQVERSION=4.53.6 /bin/bash -c for dir in .cache .config .node-gyp .npm .mongodb .ssh .yarn .local; do rm -rf /root/${dir} && ln -sf /run/root${dir} /root/${dir} && mkdir /run/root${dir}; rm -rf /home/cloudron/${dir} && ln -sf /run/cloudron${dir} /home/cloudron/${dir} && mkdir /run/cloudron${dir} && chown --no-dereference cloudron:cloudron /home/cloudron/${dir}; chown cloudron:cloudron /run/cloudron${dir}; done # buildkit |
| RUN |1 YQVERSION=4.53.6 /bin/bash -c for file in .bash_history .dbshell .inputrc .irb_history .mongorc.js .mysql_history .psql_history .mongoshrc.js .yarnrc; do ln -sf /run/root${file} /root/${file}; ln -sf /run/cloudron${file} /home/cloudron/${file} && chown --no-dereference cloudron:cloudron /home/cloudron/${file}; done # buildkit |
| COPY cloudron_addons /usr/local/cloudron_addons # buildkit |
| RUN |1 YQVERSION=4.53.6 /bin/bash -c echo -e "\nsource /usr/local/cloudron_addons\n\n[[ -f /app/data/.bashrc ]] && source /app/data/.bashrc\n" >> /root/.bashrc # buildkit |
| ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PYTHONIOENCODING=utf-8 MALLOC_ARENA_MAX=2 MALLOC_TRIM_THRESHOLD_=131072 NODE_ENV=production NEXT_TELEMETRY_DISABLED=1 DEEPTUTOR_IGNORE_PROCESS_ENV_OVERRIDES=1 DEEPTUTOR_HOME=/app DEBIAN_FRONTEND=noninteractive |
| ENV PATH=/venv/bin:/usr/local/node/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| WORKDIR /app/code |
| RUN /bin/bash -c update-ca-certificates >/dev/null 2>&1 || true ; mkdir -p /etc/apt/apt.conf.d /etc/apt/sources.list.d ; for f in /etc/apt/sources.list /etc/apt/sources.list.d/*.list; do [ -f "$f" ] || continue; sed -i -E 's|^deb (http)|deb [trusted=yes] \1|; s|^deb \[([^]]+)\] (http)|deb [\1 trusted=yes] \2|' "$f" ; done ; printf 'APT::Get::AllowUnauthenticated "true";\nAPT::Get::AllowInsecureRepositories "true";\nAcquire::Check-Valid-Until "false";\nAcquire::Check-Date "false";\nAcquire::AllowReleaseInfoChange::Suite "true";\nAcquire::AllowReleaseInfoChange::Version "true";\nAcquire::https::Verify-Peer "false";\nAcquire::https::Verify-Host "false";\n' > /etc/apt/apt.conf.d/99cloudron-apt-bypass ; apt-get clean 2>/dev/null || true ; rm -rf /var/lib/apt/lists/* ; apt-get update || true ; apt-get install -y --no-install-recommends --allow-change-held-packages --allow-unauthenticated python3 python3-venv python3-pip git ne libgl1 libsm6 libxext6 libxrender1 && ( apt-get install -y --no-install-recommends --allow-unauthenticated libglib2.0-0t64 || apt-get install -y --no-install-recommends --allow-unauthenticated libglib2.0-0 || true ) && rm -rf /var/lib/apt/lists/* /etc/apt/apt.conf.d/99cloudron-apt-bypass # buildkit |
| RUN /bin/bash -c getent group cloudron >/dev/null 2>&1 || groupadd --system --gid 999 cloudron ; getent passwd cloudron >/dev/null 2>&1 || useradd --system --uid 999 --gid 999 --no-create-home --shell /usr/sbin/nologin cloudron ; id cloudron # buildkit |
| COPY /usr/local/node /usr/local/node # buildkit |
| RUN /bin/bash -c ln -sf /usr/local/node/bin/node /usr/local/bin/node && ln -sf /usr/local/node/bin/npm /usr/local/bin/npm && ln -sf /usr/local/node/bin/npx /usr/local/bin/npx && node --version && npm --version && which node && which npm # buildkit |
| RUN /bin/bash -c ln -sf /usr/bin/python3 /usr/local/bin/python && python --version | head -1 # buildkit |
| COPY /venv /venv # buildkit |
| RUN /bin/bash -c python --version | head -1 && pip --version | head -1 && python -c "import deeptutor, sys; print('sys.path[0]:', sys.path[0]); print('deeptutor version:', getattr(deeptutor, '__version__', 'unknown'), 'from', deeptutor.__file__)" # buildkit |
| RUN /bin/bash -c python -c "import telegram; from deeptutor.partners.channels.telegram import TelegramChannel; print('python-telegram-bot', telegram.__version__, '-> TelegramChannel OK:', TelegramChannel.name)" # buildkit |
| RUN /bin/bash -c mkdir -p /app/code/deeptutor /app/code/deeptutor_cli # buildkit |
| COPY /src/deeptutor/ /app/code/deeptutor/ # buildkit |
| COPY /src/deeptutor_cli/ /app/code/deeptutor_cli/ # buildkit |
| COPY /src/pyproject.toml /app/code/pyproject.toml # buildkit |
| COPY /src/requirements/ /app/code/requirements/ # buildkit |
| COPY patches /tmp/deeptutor-patches # buildkit |
| RUN /bin/bash -c cd /app/code && for patch in /tmp/deeptutor-patches/*.patch; do echo "==> applying ${patch}" ; git apply --verbose "${patch}" ; done && rm -rf /tmp/deeptutor-patches # buildkit |
| RUN /bin/bash -c ln -sf /app/data /app/code/data # buildkit |
| COPY /src/web /app/code/web # buildkit |
| RUN /bin/bash -c mkdir -p /app/data/.next-cache && ln -sfn /app/data/.next-cache /app/code/web/.next/cache && ln -sfn /app/data/.next-cache /app/code/web/.next/standalone/.next/cache # buildkit |
| RUN /bin/bash -c mkdir -p /app/code/defaults /app/data /app/data/system /app/data/user /app/data/users /app/data/control-ui /app/data/logs /run/app /etc/supervisor/conf.d # buildkit |
| COPY defaults /app/code/defaults # buildkit |
| COPY supervisor/supervisord.conf /etc/supervisor/supervisord.conf # buildkit |
| COPY supervisor/programs.conf /etc/supervisor/conf.d/programs.conf # buildkit |
| COPY start.sh /app/code/start.sh # buildkit |
| COPY start-backend.sh /app/code/start-backend.sh # buildkit |
| COPY start-frontend.sh /app/code/start-frontend.sh # buildkit |
| RUN /bin/bash -c chmod +x /app/code/start.sh /app/code/start-backend.sh /app/code/start-frontend.sh && chmod 644 /etc/supervisor/supervisord.conf /etc/supervisor/conf.d/programs.conf && chown -R cloudron:cloudron /app/code/web /app/code/defaults /app/data /run/app 2>/dev/null || true # buildkit |
| CMD ["/app/code/start.sh"] |