ℹ️
注意:这是一个 latest 标签镜像

latest 并不代表最新版本,本站同步时间存在延迟,无法保证此镜像与上游最新版本一致
生产环境建议使用明确的版本号(如 v1.2.3),避免因版本不一致导致问题。 了解更多 →

logo
ghcr.io/hurricane0698/novelwriter:latest
linux/amd64 ghcr.io

novelwriter镜像提供开源小说写作工具novelWriter的容器化部署,方便用户快速启动并使用该工具进行小说创作、文本编辑与管理等相关工作。

11
浏览次数
210.23MB
镜像大小
国内镜像
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest
源镜像
ghcr.io/hurricane0698/novelwriter:latest
镜像ID
sha256:1ec2e447f931d7e53e642eacefdb3c5b0ce8782d9e48e1f4025d0a8265b6c9a0
镜像 TAG
latest
镜像大小
210.23MB
平台架构
linux/amd64
镜像源
ghcr.io
CMD
sh -c .venv/bin/python -m app.selfhost_db_bootstrap && .venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000
启动入口
工作目录
/app
OS/平台
linux/amd64
镜像创建
2026-08-14T13:28:35.48529548Z
同步时间
2026-08-20 16:00
浏览量
11 次
贡献者
🔌 开放端口 1
8000/tcp
⚙️ 环境变量 6
KeyValue
PATH=/app/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 0
GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305 1
PYTHON_VERSION=3.13.15 2
PYTHON_SHA256=1e66a7945a48390ee4c2a4268a0e4185884059a13c4aab6d148aa208deea4a76 3
DEPLOY_MODE=selfhost 4
SCNGS_DATA_DIR=/data 5
🏷️ 镜像标签 8
KeyValue
2026-08-14T13:25:44.460Z org.opencontainers.image.created
org.opencontainers.image.description
AGPL-3.0 org.opencontainers.image.licenses
5ae40ca303f1dc95e45c4f484caf543c4cd94ada org.opencontainers.image.revision
https://github.com/Hurricane0698/novelwriter org.opencontainers.image.source
novelWrite org.opencontainers.image.title
https://github.com/Hurricane0698/novelwriter org.opencontainers.image.url
latest org.opencontainers.image.version
🛡️ 镜像安全扫描
debian 13.6 Trivy 2026-08-20 16:00 查看完整报告
71
低危 LOW
73
中危 MEDIUM
59
高危 HIGH
4
严重 CRITICAL
受影响目标 (2)
ghcr.io/hurricane0698/novelwriter:latest (debian 13.6) debian Python python-pkg

Docker拉取命令

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest  ghcr.io/hurricane0698/novelwriter:latest

Containerd拉取命令

ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest
ctr images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest  ghcr.io/hurricane0698/novelwriter:latest

Shell快速替换命令

sed -i 's#ghcr.io/hurricane0698/novelwriter:latest#swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest#' deployment.yaml

Ansible快速分发-Docker

#ansible k8s -m shell -a 'docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest && docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest  ghcr.io/hurricane0698/novelwriter:latest'

Ansible快速分发-Containerd

#ansible k8s -m shell -a 'ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest && ctr images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest  ghcr.io/hurricane0698/novelwriter:latest'

镜像构建历史


# 2026-08-14 21:28:35  0.00B 设置默认要执行的命令
CMD ["sh" "-c" ".venv/bin/python -m app.selfhost_db_bootstrap && .venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000"]
                        
# 2026-08-14 21:28:35  0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
                        
# 2026-08-14 21:28:35  0.00B 设置环境变量 PATH
ENV PATH=/app/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                        
# 2026-08-14 21:28:35  0.00B 设置环境变量 SCNGS_DATA_DIR
ENV SCNGS_DATA_DIR=/data
                        
# 2026-08-14 21:28:35  0.00B 设置环境变量 DEPLOY_MODE
ENV DEPLOY_MODE=selfhost
                        
# 2026-08-14 21:28:35  0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c mkdir -p /data # buildkit
                        
# 2026-08-14 21:28:35  4.05MB 复制新文件或目录到容器中
COPY /web/dist/ /app/static/ # buildkit
                        
# 2026-08-14 21:28:35  5.63MB 复制新文件或目录到容器中
COPY /app/data /app/data # buildkit
                        
# 2026-08-14 21:28:35  651.00B 复制新文件或目录到容器中
COPY /app/alembic.ini /app/alembic.ini # buildkit
                        
# 2026-08-14 21:28:35  136.27KB 复制新文件或目录到容器中
COPY /app/alembic /app/alembic # buildkit
                        
# 2026-08-14 21:28:35  1.39MB 复制新文件或目录到容器中
COPY /app/app /app/app # buildkit
                        
# 2026-08-14 21:28:35  80.97MB 复制新文件或目录到容器中
COPY /app/.venv /app/.venv # buildkit
                        
# 2026-08-14 21:25:51  0.00B 设置工作目录为/app
WORKDIR /app
                        
# 2026-08-11 05:12:47  0.00B 设置默认要执行的命令
CMD ["python3"]
                        
# 2026-08-11 05:12:47  36.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; 	for src in idle3 pip3 pydoc3 python3 python3-config; do 		dst="$(echo "$src" | tr -d 3)"; 		[ -s "/usr/local/bin/$src" ]; 		[ ! -e "/usr/local/bin/$dst" ]; 		ln -svT "$src" "/usr/local/bin/$dst"; 	done # buildkit
                        
# 2026-08-11 05:12:47  35.62MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; 		savedAptMark="$(apt-mark showmanual)"; 	apt-get update; 	apt-get install -y --no-install-recommends 		dpkg-dev 		gcc 		gnupg 		libbluetooth-dev 		libbz2-dev 		libc6-dev 		libdb-dev 		libffi-dev 		libgdbm-dev 		liblzma-dev 		libncursesw5-dev 		libreadline-dev 		libsqlite3-dev 		libssl-dev 		make 		tk-dev 		uuid-dev 		wget 		xz-utils 		zlib1g-dev 	; 		wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; 	echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; 	wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; 	GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; 	gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; 	gpg --batch --verify python.tar.xz.asc python.tar.xz; 	gpgconf --kill all; 	rm -rf "$GNUPGHOME" python.tar.xz.asc; 	mkdir -p /usr/src/python; 	tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; 	rm python.tar.xz; 		cd /usr/src/python; 	gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; 	./configure 		--build="$gnuArch" 		--enable-loadable-sqlite-extensions 		--enable-optimizations 		--enable-option-checking=fatal 		--enable-shared 		$(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') 		--with-ensurepip 	; 	nproc="$(nproc)"; 	EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; 	LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; 	LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; 	arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; 	case "$arch" in 		amd64|arm64) 			EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; 			;; 		i386) 			;; 		*) 			EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; 			;; 	esac; 	make -j "$nproc" 		"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" 		"LDFLAGS=${LDFLAGS:-}" 	; 	rm python; 	make -j "$nproc" 		"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" 		"LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" 		python 	; 	make install; 		cd /; 	rm -rf /usr/src/python; 		find /usr/local -depth 		\( 			\( -type d -a \( -name test -o -name tests -o -name idle_test \) \) 			-o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) 		\) -exec rm -rf '{}' + 	; 		ldconfig; 		apt-mark auto '.*' > /dev/null; 	apt-mark manual $savedAptMark; 	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 -rt 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; 		export PYTHONDONTWRITEBYTECODE=1; 	python3 --version; 	pip3 --version # buildkit
                        
# 2026-08-11 05:02:16  0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=1e66a7945a48390ee4c2a4268a0e4185884059a13c4aab6d148aa208deea4a76
                        
# 2026-08-11 05:02:16  0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.13.15
                        
# 2026-08-11 05:02:16  0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
                        
# 2026-08-11 05:02:16  3.81MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; 	apt-get update; 	apt-get install -y --no-install-recommends 		ca-certificates 		netbase 		tzdata 	; 	apt-get dist-clean # buildkit
                        
# 2026-08-11 05:02:16  0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                        
# 2026-08-03 08:00:00  78.62MB 
# debian.sh --arch 'amd64' out/ 'trixie' '@1785715200'
                        
                    

镜像信息

{
    "Id": "sha256:1ec2e447f931d7e53e642eacefdb3c5b0ce8782d9e48e1f4025d0a8265b6c9a0",
    "RepoTags": [
        "ghcr.io/hurricane0698/novelwriter:latest",
        "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter:latest"
    ],
    "RepoDigests": [
        "ghcr.io/hurricane0698/novelwriter@sha256:74d549bfe3285a37c9b1990a792617ff8940554c9e37133fe58734ba745ec4e1",
        "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hurricane0698/novelwriter@sha256:f02a37a657ccf60ce3a265359ee57da212849f16e6e2c1e8271dfb2aac5720fb"
    ],
    "Parent": "",
    "Comment": "buildkit.dockerfile.v0",
    "Created": "2026-08-14T13:28:35.48529548Z",
    "Container": "",
    "ContainerConfig": null,
    "DockerVersion": "",
    "Author": "",
    "Config": {
        "Hostname": "",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "ExposedPorts": {
            "8000/tcp": {}
        },
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "PATH=/app/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305",
            "PYTHON_VERSION=3.13.15",
            "PYTHON_SHA256=1e66a7945a48390ee4c2a4268a0e4185884059a13c4aab6d148aa208deea4a76",
            "DEPLOY_MODE=selfhost",
            "SCNGS_DATA_DIR=/data"
        ],
        "Cmd": [
            "sh",
            "-c",
            ".venv/bin/python -m app.selfhost_db_bootstrap \u0026\u0026 .venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000"
        ],
        "ArgsEscaped": true,
        "Image": "",
        "Volumes": null,
        "WorkingDir": "/app",
        "Entrypoint": null,
        "OnBuild": null,
        "Labels": {
            "org.opencontainers.image.created": "2026-08-14T13:25:44.460Z",
            "org.opencontainers.image.description": "",
            "org.opencontainers.image.licenses": "AGPL-3.0",
            "org.opencontainers.image.revision": "5ae40ca303f1dc95e45c4f484caf543c4cd94ada",
            "org.opencontainers.image.source": "https://github.com/Hurricane0698/novelwriter",
            "org.opencontainers.image.title": "novelWrite",
            "org.opencontainers.image.url": "https://github.com/Hurricane0698/novelwriter",
            "org.opencontainers.image.version": "latest"
        }
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Size": 210230563,
    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/9d0e7def3eb4640e8df918b465e187189ae09f5440a82e3f5b3720d763afee24/diff:/var/lib/docker/overlay2/ed6f2df0307cb5a1fc729b055ac945743c24fc19f338a748c318490c71618809/diff:/var/lib/docker/overlay2/54e9f1363bfe79c878f1fd3b5b01c641163316d210da960ac0d3a53c2fdec041/diff:/var/lib/docker/overlay2/6942e4cc51d79192582c3bf5c67a714b9bc72d1d63ce1f584783cdd285766495/diff:/var/lib/docker/overlay2/bd3f883d8dffa494b1f0d3d8ba43fab6ce906209eaf1264f7a5814a28fd09597/diff:/var/lib/docker/overlay2/98c7b66659963042821a437a78e70e178d47bf26f5e6476a4b67ff0f8013910a/diff:/var/lib/docker/overlay2/a556fe1ac9c24730fdf0d5c75de2b36fab88844fa764df83fc2592d78a71f500/diff:/var/lib/docker/overlay2/eb386c325f2fbbe3cb0829aee6413051d71c0899d84eb1d52526bf5e09ab0224/diff:/var/lib/docker/overlay2/19c4a0f0207d13a30d79ca9a346d6016b2f753929257d613b79b82646adcf489/diff:/var/lib/docker/overlay2/8b19e00705c16d459cc9f65a5758090d4fcf6756b031615322058e80aee28b69/diff:/var/lib/docker/overlay2/faff4113146787f7bb5a6ce2a00d7d8484098129ae09c7d0ce5acd028427696c/diff",
            "MergedDir": "/var/lib/docker/overlay2/269b919e809ec8ff84cf6501efcecb7c14dec3435bcbe8c09dfd1efb316abbaf/merged",
            "UpperDir": "/var/lib/docker/overlay2/269b919e809ec8ff84cf6501efcecb7c14dec3435bcbe8c09dfd1efb316abbaf/diff",
            "WorkDir": "/var/lib/docker/overlay2/269b919e809ec8ff84cf6501efcecb7c14dec3435bcbe8c09dfd1efb316abbaf/work"
        },
        "Name": "overlay2"
    },
    "RootFS": {
        "Type": "layers",
        "Layers": [
            "sha256:6f94328331290cbd81edab450664d42da7b64c191416c9346cd5d28c84f76035",
            "sha256:fbb9b549523b19d576c07bd8543c7f5b6595b58323baca906a1b753dae1e1598",
            "sha256:f564df232f3c8227b05a9c4b3ab41a6d252072a52668d51bc2549c29f1ef9691",
            "sha256:fa61e5121d04964e542f254d0ca32e8b7c4c5d6c13302d98ff566e90ff21fe8b",
            "sha256:63caf5bac17952ca1a3486a56e6fbf8ebb33856baaa0b5e62d6b95b3c35796c1",
            "sha256:55bbcef55170d4533acbc8e89f24411387a8efa9a613b7170686277fcc4aeda7",
            "sha256:d1f6f0ea7b63f063e547bf3b9175c51f8e1cab2a8c530d74b0a5c31d8700dfaf",
            "sha256:ee2914d998da3ed2bbf677bd3b35a33f3bb56de61d46734fdaf50b77325b4296",
            "sha256:d7b38c27cb5b0be9f56b7912176f80f020c1a0e4d793b3f525436121c6756317",
            "sha256:472c2032e397a8ed8dc6e8efe29c2dee6fcd5bb00d55e635be86d46c9662b8e6",
            "sha256:c950dcc61007e360fe89299c8a02b614c5dab209832d72c126b94c9cb2cbac67",
            "sha256:4b8ac1ed692f1831eb73ec25ae2c9fd1117038f1f494807539d2278769e3ff07"
        ]
    },
    "Metadata": {
        "LastTagTime": "2026-08-20T16:00:15.893629036+08:00"
    }
}

更多版本

ghcr.io/hurricane0698/novelwriter:latest

linux/amd64 ghcr.io210.23MB2026-08-20 16:00
10
检测到您正在使用广告拦截插件,本站为公益站点,依赖广告维持运转 🙏 查看如何关闭 ×