镜像构建历史
# 2026-05-04 17:16:52 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["./runner.sh"]
# 2026-05-04 17:16:52 0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/data]
# 2026-05-04 17:16:52 0.00B 声明容器运行时监听的端口
EXPOSE [3000/tcp]
# 2026-05-04 17:16:52 0.00B 声明容器运行时监听的端口
EXPOSE [80/tcp]
# 2026-05-04 17:16:52 2.85KB 复制新文件或目录到容器中
COPY ./docker/runner.sh ./runner.sh # buildkit
# 2026-05-04 17:16:52 137.00B 复制新文件或目录到容器中
COPY ./docker/Procfile ./api/Procfile # buildkit
# 2026-05-04 17:16:52 20.59MB 复制新文件或目录到容器中
COPY ./api ./api # buildkit
# 2026-05-04 17:16:52 1.14KB 复制新文件或目录到容器中
COPY ./front/.env.sh ./front/.env.sh # buildkit
# 2026-05-04 17:16:52 243.89MB 复制新文件或目录到容器中
COPY /usr/local/bundle/ /usr/local/bundle # buildkit
# 2026-05-04 17:16:10 61.18MB 复制新文件或目录到容器中
COPY /app/dist /app/front # buildkit
# 2026-05-04 17:15:21 201.00B 复制新文件或目录到容器中
COPY ./docker/nginx.conf /etc/nginx/sites-enabled/default # buildkit
# 2026-05-04 17:15:21 938.14MB 执行命令并创建新的镜像层
RUN /bin/sh -c apt-get update -y && apt-get install curl ca-certificates gnupg -y && curl -fsSL https://postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/postgresql-archive-keyring.gpg > /dev/null && echo deb [arch=amd64,arm64,ppc64e1 signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main | tee /etc/ap && curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && chmod a+r /etc/apt/keyrings/docker.asc && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && apt-get update && apt-get install nginx xz-utils git libpq-dev postgresql-17 postgresql-17-partman redis-server docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y && apt-get remove apt-transport-https -y # buildkit
# 2026-05-04 17:14:24 0.00B 设置工作目录为/app
WORKDIR /app
# 2026-04-07 10:30:49 0.00B 设置默认要执行的命令
CMD ["irb"]
# 2026-04-07 10:30:49 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; mkdir "$GEM_HOME"; chmod 1777 "$GEM_HOME" # buildkit
# 2026-04-07 10:30:49 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-04-07 10:30:49 0.00B 设置环境变量 BUNDLE_SILENCE_ROOT_WARNING BUNDLE_APP_CONFIG
ENV BUNDLE_SILENCE_ROOT_WARNING=1 BUNDLE_APP_CONFIG=/usr/local/bundle
# 2026-04-07 10:30:49 0.00B 设置环境变量 GEM_HOME
ENV GEM_HOME=/usr/local/bundle
# 2026-04-07 10:30:49 90.52MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev libgdbm-dev ruby autoconf bzip2 g++ gcc libbz2-dev libffi-dev libgdbm-compat-dev libglib2.0-dev libgmp-dev libncurses-dev libssl-dev libxml2-dev libxslt-dev libyaml-dev make wget xz-utils zlib1g-dev ; rustArch=; dpkgArch="$(dpkg --print-architecture)"; case "$dpkgArch" in 'amd64') rustArch='x86_64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-gnu/rustup-init'; rustupSha256='20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c' ;; 'arm64') rustArch='aarch64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/aarch64-unknown-linux-gnu/rustup-init'; rustupSha256='e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c' ;; esac; if [ -n "$rustArch" ]; then mkdir -p /tmp/rust; wget -O /tmp/rust/rustup-init "$rustupUrl"; echo "$rustupSha256 */tmp/rust/rustup-init" | sha256sum --check --strict; chmod +x /tmp/rust/rustup-init; export RUSTUP_HOME='/tmp/rust/rustup' CARGO_HOME='/tmp/rust/cargo'; export PATH="$CARGO_HOME/bin:$PATH"; /tmp/rust/rustup-init -y --no-modify-path --profile minimal --default-toolchain '1.91.1' --default-host "$rustArch"; rustc --version; cargo --version; fi; wget -O ruby.tar.xz "$RUBY_DOWNLOAD_URL"; echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum --check --strict; mkdir -p /usr/src/ruby; tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1; rm ruby.tar.xz; cd /usr/src/ruby; autoconf; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --disable-install-doc --enable-shared ${rustArch:+--enable-yjit} ${rustArch:+--enable-zjit} ; make -j "$(nproc)"; make install; rm -rf /tmp/rust; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark > /dev/null; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -r dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; cd /; rm -r /usr/src/ruby; if dpkg -l | grep -i ruby; then exit 1; fi; [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; ruby --version; gem --version; bundle --version # buildkit
# 2026-04-07 10:30:49 0.00B 设置环境变量 RUBY_DOWNLOAD_SHA256
ENV RUBY_DOWNLOAD_SHA256=4618db85bb9ec04d8152d0099db488694a3d3c4f52106625e4ad547f1318db87
# 2026-04-07 10:30:49 0.00B 设置环境变量 RUBY_DOWNLOAD_URL
ENV RUBY_DOWNLOAD_URL=https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.2.tar.xz
# 2026-04-07 10:30:49 0.00B 设置环境变量 RUBY_VERSION
ENV RUBY_VERSION=4.0.2
# 2026-04-07 10:30:49 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-04-07 10:28:17 19.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; mkdir -p /usr/local/etc; echo 'gem: --no-document' >> /usr/local/etc/gemrc # buildkit
# 2026-04-07 10:28:17 3.78MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates ; apt-get dist-clean # buildkit
# 2026-04-06 08:00:00 78.61MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1775433600'
镜像信息
{
"Id": "sha256:6e6c353ded1979e2e29bbedce24b2f0bd19cf52297f93a86ed62c7d3f2c7294a",
"RepoTags": [
"getlago/lago:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/getlago/lago:latest"
],
"RepoDigests": [
"getlago/lago@sha256:eead2ae2796c59902d2c92edf8aa1e941045ce00429483b27482cfafc875b964",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/getlago/lago@sha256:23460b9af3bbe79f9b9d9a5ed23836eef690bded1f1bf71756de0e3f7bc13732"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-05-04T09:16:52.852933772Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3000/tcp": {},
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=C.UTF-8",
"RUBY_VERSION=4.0.2",
"RUBY_DOWNLOAD_URL=https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.2.tar.xz",
"RUBY_DOWNLOAD_SHA256=4618db85bb9ec04d8152d0099db488694a3d3c4f52106625e4ad547f1318db87",
"GEM_HOME=/usr/local/bundle",
"BUNDLE_SILENCE_ROOT_WARNING=1",
"BUNDLE_APP_CONFIG=/usr/local/bundle"
],
"Cmd": null,
"Image": "",
"Volumes": {
"/data": {}
},
"WorkingDir": "/app",
"Entrypoint": [
"./runner.sh"
],
"OnBuild": null,
"Labels": {
"org.opencontainers.image.created": "2026-05-04T09:14:14.995Z",
"org.opencontainers.image.description": "Open Source Metering and Usage Based Billing API ⭐️ Consumption tracking, Subscription management, Pricing iterations, Payment orchestration \u0026 Revenue analytics",
"org.opencontainers.image.licenses": "AGPL-3.0",
"org.opencontainers.image.revision": "d6aa3e661b40efe8ba84330df5f613b752c4590e",
"org.opencontainers.image.source": "https://github.com/getlago/lago",
"org.opencontainers.image.title": "lago",
"org.opencontainers.image.url": "https://github.com/getlago/lago",
"org.opencontainers.image.version": "v1.45.2"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1436720251,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/2e3952f968e71486660d63dd4ba8eb1be222f750ee2958eab8faea6a86007809/diff:/var/lib/docker/overlay2/98fcef3eb8003967ddf0eec69b81a0b8f7dc60eff9412b08a91c400f3bff7c42/diff:/var/lib/docker/overlay2/75172e7170b8dfda703efaf1973e6c6f650e83b6bdfe304b9c18319bf4fc66cf/diff:/var/lib/docker/overlay2/d9d7f8ea286c7a59480a991a24ccca55a901da2779522ec2939cbdf79f66e9f0/diff:/var/lib/docker/overlay2/e4f87014b751147799784d4d5658d56b546b8be5980560466b80407268fe16be/diff:/var/lib/docker/overlay2/219dbb1572ca5a5863e06c6414c9260344a6b1dc0c06d73d3de261a110ab278a/diff:/var/lib/docker/overlay2/7cfa3694acbdb9c8a81e3d11983997b9812b35fe76d26ccaeaba220c7b0130f8/diff:/var/lib/docker/overlay2/2b48dbb7cf974d5d48f78ed085d197a61b6fba4fae41c972525264d18d793b33/diff:/var/lib/docker/overlay2/0dde4a8af9b3c5cf3f92deb56687596993790d72ccd034774044d36c4bfdcb02/diff:/var/lib/docker/overlay2/51a483dafabadd53b31c3ccda95ba1fa717e2a056793ac7ce61b9cd1262439b5/diff:/var/lib/docker/overlay2/260da28d6135eafb17883c1ae2c2dc5f2c20958cf5e2a3aafca7545bd6d70ae2/diff:/var/lib/docker/overlay2/b3f9b68b9bf010e81f33409f4c29868d6a0220793d282d328ea5929e9501b334/diff:/var/lib/docker/overlay2/b5338dc4d8a3468a0e6a7c0e2ebff385c3a1e6f8038d4415c898d4917fe4e5e9/diff",
"MergedDir": "/var/lib/docker/overlay2/cf37c448b1a19d2eaa2807c91dc49c569b4f39e37d659718c5508d82f2021f96/merged",
"UpperDir": "/var/lib/docker/overlay2/cf37c448b1a19d2eaa2807c91dc49c569b4f39e37d659718c5508d82f2021f96/diff",
"WorkDir": "/var/lib/docker/overlay2/cf37c448b1a19d2eaa2807c91dc49c569b4f39e37d659718c5508d82f2021f96/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:60e70dddd9ea3b1c77c62fe78be1d9f485706b6fe6052c3d88612bd8f56acd67",
"sha256:8187b9a8c4b423adb4e96e1337b795baf172dc42004513e24393ec1f8b307c17",
"sha256:13ff9cfe9c5cd15174f19e354caf664fe69834fe6afbeed7e2efa96dc44ef07c",
"sha256:33fba7cb0c44491d1a331e13f6e630f6d06b7096f24037dd4dbe0728bb8eafc9",
"sha256:a8edfa5f4ede52d45564c80db084644ffbc624c8652e50eb68c8792a0c9a7d9f",
"sha256:a959f6af55591c8b53b82c296322c281cd2411421e302b0202b2af07b1cc7903",
"sha256:211351fe11aa07e75d40191850b2d611e3abb59ea2760982ad418b513e2c8c92",
"sha256:cb9662e4e6ec219bc2a030601652d93775e6dbc8ebc2f97cba23308daf9a55c4",
"sha256:547a552eaab66343802864db0e55e1df86a0d763f40963112f9905b7d23988d1",
"sha256:6944aedd612956331c2902f05dce39e18474180cbe57b94e98ab81466816a22c",
"sha256:a22a22d51c1237a1549a9d3f2ce2ff4ad7298d966a8b5f14a0901bfae084f21b",
"sha256:b20513c95db3f4fc8f6010e4bef5cefcc9a632413032cf1349dacc3fd9b8b6b3",
"sha256:6129186e7e352320d6634dffe0096424ddfa58121b52a65713c63275ee4151cb",
"sha256:7dd74ff7ce2b879db560da3983276322d9a4306f5bf31dfc29ce9d85b1bd76f6"
]
},
"Metadata": {
"LastTagTime": "2026-05-12T17:17:47.959289389+08:00"
}
}