镜像构建历史
# 2026-10-05 18:05:54 0.00B 设置默认要执行的命令
CMD ["/app/bin/bundle" "exec" "puma" "-C" "/app/config/puma.rb" "--dir" "/app"]
# 2026-10-05 18:05:54 0.00B 声明容器运行时监听的端口
EXPOSE [3000/tcp]
# 2026-10-05 18:05:54 0.00B 设置环境变量 VIPS_BLOCK_UNTRUSTED
ENV VIPS_BLOCK_UNTRUSTED=1
# 2026-10-05 18:05:54 0.00B 设置环境变量 VIPS_MAX_COORD
ENV VIPS_MAX_COORD=17000
# 2026-10-05 18:05:54 0.00B 设置环境变量 WORKDIR
ENV WORKDIR=/data/docuseal
# 2026-10-05 18:05:54 0.00B 设置环境变量 HOME
ENV HOME=/home/docuseal
# 2026-10-05 18:05:54 0.00B 设置工作目录为/data/docuseal
WORKDIR /data/docuseal
# 2026-10-05 18:05:54 54.51MB 执行命令并创建新的镜像层
RUN /bin/sh -c mkdir -p /app/public/fonts && ln -s /fonts/DancingScript-Regular.otf /app/public/fonts/ && mkdir -p /usr/share/fonts/noto && ln -s /fonts/GoNotoKurrent-Regular.ttf /usr/share/fonts/noto/ && ln -s /fonts/GoNotoKurrent-Bold.ttf /usr/share/fonts/noto/ && fc-cache -f && bundle exec bootsnap precompile -j 1 --gemfile app/ lib/ && chown -R docuseal:docuseal /app/tmp/cache # buildkit
# 2026-10-05 18:04:21 28.80MB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal /app/public/packs ./public/packs # buildkit
# 2026-10-05 18:01:50 30.78MB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal /model.onnx /app/tmp/model.onnx # buildkit
# 2026-10-05 18:01:50 95.94KB 复制新文件或目录到容器中
COPY /pdfium-linux/licenses/ /usr/lib/libpdfium-licenses/ # buildkit
# 2026-10-05 18:01:50 17.39MB 复制新文件或目录到容器中
COPY /pdfium-linux/lib/libpdfium.so /usr/lib/libpdfium.so # buildkit
# 2026-10-05 18:01:50 30.94MB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal /fonts/GoNotoKurrent-Regular.ttf /fonts/GoNotoKurrent-Bold.ttf /fonts/DancingScript-Regular.otf /fonts/OFL.txt /fonts/LICENSE /fonts/ # buildkit
# 2026-10-05 18:01:50 6.00B 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal .version ./public/version # buildkit
# 2026-10-05 18:01:50 40.56KB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal LICENSE LICENSE_ADDITIONAL_TERMS README.md Rakefile config.ru .version ./ # buildkit
# 2026-10-05 18:01:50 0.00B 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal ./tmp ./tmp # buildkit
# 2026-10-05 18:01:50 73.73KB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal ./public ./public # buildkit
# 2026-10-05 18:01:50 538.89KB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal ./lib ./lib # buildkit
# 2026-10-05 18:01:50 0.00B 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal ./log ./log # buildkit
# 2026-10-05 18:01:50 52.29KB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal ./db/migrate ./db/migrate # buildkit
# 2026-10-05 18:01:50 625.78KB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal ./config ./config # buildkit
# 2026-10-05 18:01:50 2.35MB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal ./app ./app # buildkit
# 2026-10-05 18:01:50 5.15KB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal ./bin ./bin # buildkit
# 2026-10-05 18:01:50 131.89MB 执行命令并创建新的镜像层
RUN /bin/sh -c apk add --no-cache build-base git libpq-dev yaml-dev && bundle install && apk del --no-cache build-base git libpq-dev yaml-dev && rm -rf ~/.bundle /usr/local/bundle/cache && ruby -e "puts Dir['/usr/local/bundle/**/{spec,rdoc,resources/shared,resources/collation,resources/locales,resources/unicode_data/properties}'] + Dir['/usr/local/bundle/gems/*/{test,tests,examples,sample,misc,doc,docs}'] + Dir['/usr/local/bundle/gems/*/ext/**/*.{c,h,o,S}']" | xargs rm -rf && ln -sf /usr/lib/libonnxruntime.so.1 $(ruby -e "print Dir[Gem::Specification.find_by_name('onnxruntime').gem_dir + '/vendor/*.so'].first") # buildkit
# 2026-10-05 17:45:00 17.55KB 复制新文件或目录到容器中
COPY --chown=docuseal:docuseal ./Gemfile ./Gemfile.lock ./ # buildkit
# 2026-10-05 17:45:00 150.00B 执行命令并创建新的镜像层
RUN /bin/sh -c echo $'.include = /etc/ssl/openssl.cnf\n\n[provider_sect]\ndefault = default_sect\nlegacy = legacy_sect\n\n[default_sect]\nactivate = 1\n\n[legacy_sect]\nactivate = 1' >> /etc/openssl_legacy.cnf # buildkit
# 2026-10-05 17:45:00 3.25KB 执行命令并创建新的镜像层
RUN /bin/sh -c addgroup -g 2000 docuseal && adduser -u 2000 -G docuseal -s /bin/sh -D -h /home/docuseal docuseal # buildkit
# 2026-10-05 17:44:59 105.18MB 执行命令并创建新的镜像层
RUN /bin/sh -c apk add --no-cache libpq vips redis onnxruntime leptonica && rm -f /usr/bin/onnx_test_runner /usr/bin/onnxruntime_test # buildkit
# 2026-10-05 17:44:49 0.00B 设置工作目录为/app
WORKDIR /app
# 2026-10-05 17:44:49 0.00B 设置环境变量 OPENSSL_CONF
ENV OPENSSL_CONF=/etc/openssl_legacy.cnf
# 2026-10-05 17:44:49 0.00B 设置环境变量 BUNDLE_WITHOUT
ENV BUNDLE_WITHOUT=development:test
# 2026-10-05 17:44:49 0.00B 设置环境变量 RAILS_ENV
ENV RAILS_ENV=production
# 2026-06-16 08:23:35 0.00B 设置默认要执行的命令
CMD ["irb"]
# 2026-06-16 08:23:35 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; mkdir "$GEM_HOME"; chmod 1777 "$GEM_HOME" # buildkit
# 2026-06-16 08:23:35 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-06-16 08:23:35 0.00B 设置环境变量 BUNDLE_SILENCE_ROOT_WARNING BUNDLE_APP_CONFIG
ENV BUNDLE_SILENCE_ROOT_WARNING=1 BUNDLE_APP_CONFIG=/usr/local/bundle
# 2026-06-16 08:23:35 0.00B 设置环境变量 GEM_HOME
ENV GEM_HOME=/usr/local/bundle
# 2026-06-16 08:23:35 80.86MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apk add --no-cache --virtual .ruby-builddeps autoconf bzip2 bzip2-dev ca-certificates coreutils dpkg-dev dpkg g++ gcc gdbm-dev glib-dev gmp-dev libc-dev libffi-dev libxml2-dev libxslt-dev linux-headers make ncurses-dev openssl openssl-dev patch procps yaml-dev zlib-dev ruby tar xz yaml-dev zlib-dev ; rustArch=; apkArch="$(apk --print-arch)"; case "$apkArch" in 'x86_64') rustArch='x86_64-unknown-linux-musl'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-musl/rustup-init'; rustupSha256='e6599a1c7be58a2d8eaca66a80e0dc006d87bbcf780a58b7343d6e14c1605cb2' ;; 'aarch64') rustArch='aarch64-unknown-linux-musl'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/aarch64-unknown-linux-musl/rustup-init'; rustupSha256='a97c8f56d7462908695348dd8c71ea6740c138ce303715793a690503a94fc9a9' ;; 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; wget -O 'thread-stack-fix.patch' 'https://bugs.ruby-lang.org/attachments/download/7081/0001-thread_pthread.c-make-get_main_stack-portable-on-lin.patch'; echo '3ab628a51d92fdf0d2b5835e93564857aea73e0c1de00313864a94a6255cb645 *thread-stack-fix.patch' | sha256sum --check --strict; patch -p1 -i thread-stack-fix.patch; rm thread-stack-fix.patch; 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; runDeps="$( scanelf --needed --nobanner --format '%n#p' --recursive /usr/local | tr ',' '\n' | sort -u | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' )"; apk add --no-network --virtual .ruby-rundeps $runDeps; apk del --no-network .ruby-builddeps; cd /; rm -r /usr/src/ruby; if apk --no-network list --installed | grep -v '^[.]ruby-' | grep -i ruby ; then exit 1; fi; [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; ruby --version; gem --version; bundle --version # buildkit
# 2026-06-16 08:23:35 0.00B 设置环境变量 RUBY_DOWNLOAD_SHA256
ENV RUBY_DOWNLOAD_SHA256=5dc5521ea54c726e6cc10b1b5a0f4004b27b482e61c04c99aed79315e30895e5
# 2026-06-16 08:23:35 0.00B 设置环境变量 RUBY_DOWNLOAD_URL
ENV RUBY_DOWNLOAD_URL=https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.5.tar.xz
# 2026-06-16 08:23:35 0.00B 设置环境变量 RUBY_VERSION
ENV RUBY_VERSION=4.0.5
# 2026-06-16 08:23:35 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-06-16 08:21:12 19.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; mkdir -p /usr/local/etc; echo 'gem: --no-document' >> /usr/local/etc/gemrc # buildkit
# 2026-06-16 08:01:29 0.00B 设置默认要执行的命令
CMD ["/bin/sh"]
# 2026-06-16 08:01:29 8.42MB 复制文件或目录到容器中
ADD alpine-minirootfs-3.24.1-x86_64.tar.gz / # buildkit
镜像信息
{
"Id": "sha256:a2dd07c176cba6f7271b9c690528f648b1ec8e5d0f73bcffdebe505d3c35ce56",
"RepoTags": [
"docuseal/docuseal:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/docuseal/docuseal:latest"
],
"RepoDigests": [
"docuseal/docuseal@sha256:e171808ce8dabb08491a49a6d8c477670a65ddce5e3de4764904b63a4487940f",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/docuseal/docuseal@sha256:1547eccd98031c03cc923fc06621c0012d5187d0acd8e9f4a3618cc0edc25a80"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-10-05T10:05:54.87852964Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3000/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.5",
"RUBY_DOWNLOAD_URL=https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.5.tar.xz",
"RUBY_DOWNLOAD_SHA256=5dc5521ea54c726e6cc10b1b5a0f4004b27b482e61c04c99aed79315e30895e5",
"GEM_HOME=/usr/local/bundle",
"BUNDLE_SILENCE_ROOT_WARNING=1",
"BUNDLE_APP_CONFIG=/usr/local/bundle",
"RAILS_ENV=production",
"BUNDLE_WITHOUT=development:test",
"OPENSSL_CONF=/etc/openssl_legacy.cnf",
"HOME=/home/docuseal",
"WORKDIR=/data/docuseal",
"VIPS_MAX_COORD=17000",
"VIPS_BLOCK_UNTRUSTED=1"
],
"Cmd": [
"/app/bin/bundle",
"exec",
"puma",
"-C",
"/app/config/puma.rb",
"--dir",
"/app"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/data/docuseal",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 492569657,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/6d656e8cb1484edb102b80ad446366b48ebe042c1279d9c148cccd540be8f0e1/diff:/var/lib/docker/overlay2/7eaec21a2b92782f8531ac37ec97f05601f8f4c115dfe1fb6638740902cfdfbd/diff:/var/lib/docker/overlay2/ffb3fb7ffa8d62ab7dfa4f93f740d78f366afdaa183901e60196aa934b2fdf35/diff:/var/lib/docker/overlay2/1c094d1872e43eea2e6ad160471ce6917d840b3f7ad9185e18ef474edd875284/diff:/var/lib/docker/overlay2/cb7225ba9a7ef0c2913ff882e1ee7b423d2e7779744ee9fc4417549da9bd9a2b/diff:/var/lib/docker/overlay2/ea2cb10562b8234385449bdc4dfddd8a6b82a41df6ed1060ca27ebeb5f4f3a84/diff:/var/lib/docker/overlay2/201722bfab7fea4da63351c89310b129798124ee0d609a1d26297d7544c4896f/diff:/var/lib/docker/overlay2/fa4e900a22d6455813a94424a341f9929da059e4d9e74964166744d4ce98adbc/diff:/var/lib/docker/overlay2/f68e92becc82f826dad03f1fae5381caec2d28ddcde0b18e16f552223c2a0037/diff:/var/lib/docker/overlay2/a6637a7757acb8f0ff39da9133d8e89e930cf72cdced3566170a3d2c9508cf47/diff:/var/lib/docker/overlay2/12b7c0d6a10c70aacaf93dbe1da95e948fafa3a83dd78561a3a2c5371a74fbe5/diff:/var/lib/docker/overlay2/306ec0893f3130b6ee0d3d5fc9c239a9c6c4e2ab4584eea82b7fd142399f773c/diff:/var/lib/docker/overlay2/ced58fb29a1fc932f4d3150bb52d1af41e5b9f8ac48fea9e9ceaa23ff0d150c8/diff:/var/lib/docker/overlay2/25ddbe203e2100c7bb8f546f064ec20bec11731a547cfbb9c79e2928bac430b2/diff:/var/lib/docker/overlay2/c513d5b36f4ee18f8dc035165a3ddde0dbaea0fa33ecf0dde78138b8d5994e4c/diff:/var/lib/docker/overlay2/392e6e895fbb0b3a9291613d20e90bc8e4d02c87b889c0dd62aa2c721715f4af/diff:/var/lib/docker/overlay2/376e609661c2d82a323ca4b9d60fbc402781d1f130b26e11851e8b3de2d546a1/diff:/var/lib/docker/overlay2/89a7909af79253464a929f7b7a27fae8d84076d901b3dd033c827bc7b3af02b7/diff:/var/lib/docker/overlay2/3d9cf9b4831bed871845b168980456c02f4786090d8f0d428ed7e59c16b23879/diff:/var/lib/docker/overlay2/0743110978b07efc02ce9170b7988a1dcc6411c29a150ab56a0fd54329ed8539/diff:/var/lib/docker/overlay2/496abaea44906f007b58ce040b97f62e0d64d1a87aa23bbaeb6db2b99c469273/diff:/var/lib/docker/overlay2/c7730959d6dd476bbacce6179e4f1c8eb49fc2500e7252d41c86fd432a76da6b/diff:/var/lib/docker/overlay2/3119a6c7e6d3b29ff704cf777622a92bad80da2848cf21c04cb9aba5e815f56e/diff:/var/lib/docker/overlay2/9d6e63cced89da67e1440ee240567f602d49c8847d30d52c6a244ed9c8b1c409/diff:/var/lib/docker/overlay2/85df008e8a48004b6c0732e8fd89625dca9b528d8b09bd5f281e7160771f55c9/diff:/var/lib/docker/overlay2/9f3fcebffbeac76c70c62cfccaf25a7668ed53214f12afccf3ddc7c203d871dd/diff",
"MergedDir": "/var/lib/docker/overlay2/54bdff916732bb459e24e634b82ccb2d08f3e40bbeeec294d08c3a6e02d289d8/merged",
"UpperDir": "/var/lib/docker/overlay2/54bdff916732bb459e24e634b82ccb2d08f3e40bbeeec294d08c3a6e02d289d8/diff",
"WorkDir": "/var/lib/docker/overlay2/54bdff916732bb459e24e634b82ccb2d08f3e40bbeeec294d08c3a6e02d289d8/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c",
"sha256:ae262a8bce1918a6f2d4bd9a17d42b3e822e591416030a0c6cd2632ea29343b1",
"sha256:bfb9192e7c7370ff3fb62314485fc61d0ed3beac663769954e2f08df7870631e",
"sha256:817aee15f2707ad85a83045b6244172692a5e676b87f2b583fe81723b50190d3",
"sha256:1c375a34761ced93b4563a676eaccc3753bb76597c91875a70d6c872f4cc5a23",
"sha256:98c15ad59c56dd1f6e17adbb88705d4897bf260fc2b42973d97cc909041b2689",
"sha256:648e78c3fc5658fce64ae8b845b22100af1b1937b080e546d407a9ace6515870",
"sha256:dc89e5fd4359628ae3406973887ad15db0d97925e63b8e27234b92aeab9309ba",
"sha256:0f59ee60151f92e2fc560f303cafe96a9c67bac3efa6fe6221d6eee50002d5bb",
"sha256:3f8a990a79e2ac78ad7e43d617038835de3e2c89637077a3aa0fb259655f200f",
"sha256:b38888d39828b24edba4f9152e2cfb29a54330e82d343d483f9870d52b204c6d",
"sha256:2dca4c9e8908bba4fa57b55425f92ed8859c6b2ba3fed3d08b01e9f628cc1ffd",
"sha256:9dd184752bfc40300cb58e17269d6f37e82fc1dd9e37821343e162bb2b15ad08",
"sha256:bb4b560b7aa86e50de8a7e2b6f3f53914493add58aac6b59eb9e82f4983a6d11",
"sha256:f5917c41a02ca49035a88ea0a6538889ad32caaca754fb9b96888e30d99f343d",
"sha256:2a0743ac1607c48c4f806379e45cc78b2bc66ecbddc41c19ea4d8e16db710af5",
"sha256:cfc1a4f8e8b0a3314bc12f98900113221cb295a559f491b0b4a1d83887ae7ab6",
"sha256:62e6b35bedaefdeaae5202939f9d908494eddb846e0aaf3950084177a4f567b6",
"sha256:c06a0f01d034a2cf62c6b24d81edf56a442bab84185b86ce9937c2f7b07b6e19",
"sha256:e6370af38a2e8a517361c898dbddf7096fa36ccd300c2b9bc8b70a94cf546039",
"sha256:2762b87f12c7c4983a64e3340f8309d66cd46b55c54bd41fe96c5813b345aade",
"sha256:7502ef1a3b26fe8eaa671aee4b2413109a79e65359e763b70bf04030fa0941e0",
"sha256:f116337060cab1cc2860db199338c69b4612b9bd67236584f2f02fc8f4fe440b",
"sha256:fec133271fa686f1f55eb181074c2f56996fb7c4dbcc5fee6ad7b44d34bafad8",
"sha256:d19e546e65316524eedfa86e955590d307baac979d0f911370b8ab3f960d97f8",
"sha256:c921db5e15b43de85819a60c83a4d7e2ff34f1f22b01a2acebe2bc7baf2c242e",
"sha256:49382a21c657a496fb522fa2d8abdd9f100f7d4091cde87fc33522d05e957c18"
]
},
"Metadata": {
"LastTagTime": "2026-10-08T00:06:56.079612579+08:00"
}
}