镜像构建历史
# 2026-07-19 23:11:49 0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/webodm/app/media]
# 2026-07-19 23:11:49 904.11MB 复制新文件或目录到容器中
COPY /webodm ./ # buildkit
# 2026-07-19 23:11:36 79.83MB 复制新文件或目录到容器中
COPY /usr/bin/ffmpeg /usr/bin/ffmpeg # buildkit
# 2026-07-19 23:11:36 5.25MB 复制新文件或目录到容器中
COPY /staging/entwine/build/install/lib/libentwine* /usr/lib/ # buildkit
# 2026-07-19 23:11:34 482.18KB 复制新文件或目录到容器中
COPY /staging/entwine/build/install/bin/entwine /usr/bin/entwine # buildkit
# 2026-07-19 23:07:11 590.30MB 执行命令并创建新的镜像层
RUN |5 DEBIAN_FRONTEND=noninteractive NODE_MAJOR=20 PYTHON_VERSION=3.9 RELEASE_CODENAME=jammy WORKDIR=/webodm sh -exc # Run-time dependencies
apt-get -qq update
apt-get install -y --no-install-recommends curl ca-certificates gnupg
# Legacy Python support
curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf23c5a6cf475977595c89f51ba6932366a755776' | gpg --dearmor -o /etc/apt/trusted.gpg.d/deadsnakes.gpg
echo "deb http://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu $RELEASE_CODENAME main" > /etc/apt/sources.list.d/deadsnakes.list
# Node.js deb source
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/nodesource.gpg
echo "deb https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" > /etc/apt/sources.list.d/nodesource.list
# Nginx deb source (official stable)
curl -fsSL https://nginx.org/keys/nginx_signing.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/nginx.gpg
echo "deb https://nginx.org/packages/ubuntu $RELEASE_CODENAME nginx" > /etc/apt/sources.list.d/nginx.list
printf "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" > /etc/apt/preferences.d/99nginx
# Update package list
apt-get update
# Install common deps, starting with NodeJS
apt-get -qq install -y nodejs
# Python, GDAL, PDAL, nginx, letsencrypt, psql, git, exiftool
apt-get install -y --no-install-recommends \
python$PYTHON_VERSION python$PYTHON_VERSION-distutils gdal-bin pdal \
nginx certbot logrotate gettext-base cron postgresql-client gettext tzdata git exiftool
# Install webpack, webpack CLI
npm install --quiet -g webpack@5.89.0
npm install --quiet -g webpack-cli@5.1.4
# Cleanup of build requirements
apt-get autoremove -y
apt-get clean
rm -rf /var/lib/apt/lists/*
# Remove stale temp files
rm -rf /tmp/* /var/tmp/*
# buildkit
# 2026-07-19 23:06:26 0.00B 设置环境变量 PATH
ENV PATH=/webodm/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-07-19 23:06:26 4.00B 执行命令并创建新的镜像层
RUN |5 DEBIAN_FRONTEND=noninteractive NODE_MAJOR=20 PYTHON_VERSION=3.9 RELEASE_CODENAME=jammy WORKDIR=/webodm sh -exc # Common system configuration, should change very infrequently
# Set timezone to UTC
echo "UTC" > /etc/timezone
# buildkit
# 2026-07-19 23:06:26 0.00B
SHELL [sh -exc]
# 2026-07-19 23:06:26 0.00B 设置工作目录为/webodm
WORKDIR /webodm
# 2026-07-19 23:06:26 0.00B 设置环境变量 PROJ_LIB
ENV PROJ_LIB=/usr/share/proj
# 2026-07-19 23:06:26 0.00B 设置环境变量 PYTHONPATH
ENV PYTHONPATH=/webodm
# 2026-07-19 23:06:26 0.00B 设置环境变量 PYTHONUNBUFFERED
ENV PYTHONUNBUFFERED=1
# 2026-07-19 23:06:26 0.00B 定义构建参数
ARG WORKDIR=/webodm
# 2026-07-19 23:06:26 0.00B 定义构建参数
ARG RELEASE_CODENAME=jammy
# 2026-07-19 23:06:26 0.00B 定义构建参数
ARG PYTHON_VERSION=3.9
# 2026-07-19 23:06:26 0.00B 定义构建参数
ARG NODE_MAJOR=20
# 2026-07-19 23:06:26 0.00B 定义构建参数
ARG DEBIAN_FRONTEND=noninteractive
# 2026-07-19 23:06:26 0.00B 添加元数据标签
LABEL maintainer=Piero Toffanin <pt@masseranolabs.com>
# 2026-06-29 19:07:32 0.00B
/bin/sh -c #(nop) CMD ["/bin/bash"]
# 2026-06-29 19:07:32 78.08MB
/bin/sh -c #(nop) ADD file:c5143b228eb55f19ed4d3b653ad68ec7afe54ded0247e090ce3afb9e5484adfb in /
# 2026-06-29 19:07:30 0.00B
/bin/sh -c #(nop) LABEL org.opencontainers.image.version=22.04
# 2026-06-29 19:07:30 0.00B
/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH
# 2026-06-29 19:07:30 0.00B
/bin/sh -c #(nop) ARG RELEASE
镜像信息
{
"Id": "sha256:9332c055935a3059f6d7ac32ec62bbf6dfc6143615c9abd347358afb435360e5",
"RepoTags": [
"webodm/webodm_webapp:3.2.7",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/webodm/webodm_webapp:3.2.7"
],
"RepoDigests": [
"webodm/webodm_webapp@sha256:698ef49ec18d9b4139831c85b5b660a1038f298a71027f229e03bb1dc5a69212",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/webodm/webodm_webapp@sha256:4af5063d516a4e6c5d15200f4997639488d167f012d5c89dbdad37e5fb412452"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-07-19T15:11:49.074705057Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/webodm/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"PYTHONUNBUFFERED=1",
"PYTHONPATH=/webodm",
"PROJ_LIB=/usr/share/proj"
],
"Cmd": [
"/bin/bash"
],
"Image": "",
"Volumes": {
"/webodm/app/media": {}
},
"WorkingDir": "/webodm",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"maintainer": "Piero Toffanin \u003cpt@masseranolabs.com\u003e",
"org.opencontainers.image.version": "22.04"
},
"Shell": [
"sh",
"-exc"
]
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1658043289,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/39afffbe53603229ffcff4826bf689c2954cc696db5b5add2283d41cdeafb9a9/diff:/var/lib/docker/overlay2/e14cc4bcef2260f784fdc5460048d5eddb81e47c1f8db1ab3b52e71bd4446195/diff:/var/lib/docker/overlay2/d4dc996beab110d7801d52ab31651b205273f32f1068ef7409f0bfc439831f03/diff:/var/lib/docker/overlay2/cd675c70b9c0202d14519e0a1b2c2b885bcb31ea6b1a313414ea5ca8983a488a/diff:/var/lib/docker/overlay2/4e341d9c0240d5c2f61661fdc3fe8bf9e791259590cac4c5a8edfd3fefc78e09/diff:/var/lib/docker/overlay2/fe699e6e3d78a71754e2516add84ddcac69f0995a43fc81bab8f199cd10b6adb/diff:/var/lib/docker/overlay2/75b9323bf1b07b96f17cbf957da69dd3df927274b5362f2e6078111ad42783e6/diff",
"MergedDir": "/var/lib/docker/overlay2/0a31aa9399a006f50aeca5de7d83246dbb35076a1c0f4a7d78cd5d4a9e4b0433/merged",
"UpperDir": "/var/lib/docker/overlay2/0a31aa9399a006f50aeca5de7d83246dbb35076a1c0f4a7d78cd5d4a9e4b0433/diff",
"WorkDir": "/var/lib/docker/overlay2/0a31aa9399a006f50aeca5de7d83246dbb35076a1c0f4a7d78cd5d4a9e4b0433/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:10f9108f6cebf96e05cadfab3c188071f3c6d084abe680fd0bc9f61c268e854d",
"sha256:5e9a827df76c1ca8ffc690de98ed0ad044f933086fd129165ff6a25560c2dfbf",
"sha256:23b8c78cfa1891025bcfe3fe70afcb58c4a178fbb1e7a7a2ced490a846b59777",
"sha256:ed8704f17885a5924fbce11c093199a530a53a23f17479f6b9a432b8006eea4f",
"sha256:307dd71f8c9233d452c62b4b71ff6a23fd41cf2329dbc7ba3c4b69b20a140e54",
"sha256:dde81d4b460117289df51b2a9b0e3c55db2b088172f4a34fb265efc41aa2fccd",
"sha256:5d901ac8729960df6317ae56534ece9941fbdb9b37f5b991a80f0fe0adcbc7ad",
"sha256:78a712057a55d4aed356a9740386ee57e0b59f52a252130e278e22ca48047c88"
]
},
"Metadata": {
"LastTagTime": "2026-08-11T14:33:30.053413663+08:00"
}
}