zola
zola copied to clipboard
Use with Docker - Missing config file
Bug Report
Environment
Zola version: 0.16.0
Expected Behavior
Application works
Current Behavior
➤ docker run -u "$(id -u):$(id -g)" -v $PWD:/app --workdir /app ghcr.io/getzola/zola:v0.16.0 build
Building site...
thread 'main' panicked at 'could not find directory containing config file', src/main.rs:19:28
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
➤ docker run -u "$(id -u):$(id -g)" -v $PWD:/app --env RUST_BACKTRACE=full --workdir /app ghcr.io/getzola/zola:v0.16.0 build 101 ↵
Building site...
thread 'main' panicked at 'could not find directory containing config file', src/main.rs:19:28
stack backtrace:
0: 0x55e91c061c91 - std::backtrace_rs::backtrace::libunwind::trace::hb729d9642bb971eb
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x55e91c061c91 - std::backtrace_rs::backtrace::trace_unsynchronized::h373bb774579df5c7
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x55e91c061c91 - std::sys_common::backtrace::_print_fmt::hfbd4e92d240c89bb
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/sys_common/backtrace.rs:66:5
3: 0x55e91c061c91 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h8f618991fbf64972
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/sys_common/backtrace.rs:45:22
4: 0x55e91badda1c - core::fmt::write::hc69b5b640d88cce8
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/fmt/mod.rs:1196:17
5: 0x55e91c037114 - std::io::Write::write_fmt::h3403cef06a24a303
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/io/mod.rs:1654:15
6: 0x55e91c062db6 - std::sys_common::backtrace::_print::h368f27cdedea0e52
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/sys_common/backtrace.rs:48:5
7: 0x55e91c062db6 - std::sys_common::backtrace::print::ha105c9cf5a64cd17
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/sys_common/backtrace.rs:35:9
8: 0x55e91c062db6 - std::panicking::default_hook::{{closure}}::h48ed2c3707d5e20e
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panicking.rs:295:22
9: 0x55e91c063e46 - std::panicking::default_hook::h8744fc5cea5e3110
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panicking.rs:314:9
10: 0x55e91c063e46 - std::panicking::rust_panic_with_hook::hc82286af2030e925
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panicking.rs:698:17
11: 0x55e91b91b39a - std::panicking::begin_panic::{{closure}}::h1d56d1a61ff391da
12: 0x55e91b915b26 - std::sys_common::backtrace::__rust_end_short_backtrace::h5df884103db41ec6
13: 0x55e91b85d8c6 - std::panicking::begin_panic::hd1e8b13b0a9ba76f
14: 0x55e91b96a485 - zola::get_config_file_path::h21da28db3c5732b7
15: 0x55e91b96e74e - zola::main::hc05a323e8a368d2e
16: 0x55e91b915b33 - std::sys_common::backtrace::__rust_begin_short_backtrace::h08c8ed788b6a20f6
17: 0x55e91b97c5a2 - main
18: 0x7ff8e8dcdd0a - __libc_start_main
19: 0x55e91b8ec13a - _start
20: 0x0 - <unknown>
To fix it, the documentation must be updated with:
ocker run -u "$(id -u):$(id -g)" -v $PWD:/app --tty --interactive --workdir /app ghcr.io/getzola/zola:v0.16.0 init
Thanks for posting this.
I've added the additional flags here in your fix, but I'm still receiving the error. Additionally, the stack backtrace isn't displaying any information, just <unknown>
for most entries.
❯ docker run -u "$(id -u):$(id -g)" -it --rm -v $PWD:/app --tty --interactive --env RUST_BACKTRACE=full --workdir /app zola build
Building site...
thread 'main' panicked at 'could not find directory containing config file', src/main.rs:19:28
stack backtrace:
0: 0x56456f0021ac - <unknown>
1: 0x56456e8d191e - <unknown>
2: 0x56456efd8034 - <unknown>
3: 0x56456f00396f - <unknown>
4: 0x56456f00356f - <unknown>
5: 0x56456f00460c - <unknown>
6: 0x56456e6df699 - <unknown>
7: 0x56456e6d661c - <unknown>
8: 0x56456e63915a - <unknown>
9: 0x56456e7342fe - <unknown>
10: 0x56456e734c81 - <unknown>
11: 0x56456e6d8413 - <unknown>
12: 0x56456e7459d9 - <unknown>
13: 0x7f735d6b6d0a - __libc_start_main
14: 0x56456e6acaaa - <unknown>
15: 0x0 - <unknown>
❯ ls -l
total 48
-rw-r--r--. 1 brandon brandon 615 Mar 20 15:11 config.toml
drwxr-xr-x. 1 brandon brandon 68 Mar 24 17:40 content
-rw-r--r--. 1 brandon docker 98 Mar 26 16:35 Dockerfile
-rw-r--r--. 1 brandon brandon 34521 Dec 25 14:19 LICENSE
-rw-r--r--. 1 brandon brandon 861 Mar 25 11:36 README.md
drwxr-xr-x. 1 brandon brandon 116 Mar 25 11:24 static
drwxr-xr-x. 1 brandon brandon 268 Mar 25 08:11 templates
Here's my Dockerfile
:
FROM ghcr.io/getzola/zola:v0.17.2 as zola
ENV RUST_BACKTRACE=full
VOLUME ["/app"]
WORKDIR /app
Zola v0.17.2
EDIT: I was able to fix this with the following.
podman run -it --rm -v $PWD:/app --security-opt label=disable --tty --interactive --workdir /app myzola build
Firstly, the -u "$(id -u):$(id -g)"
flag can cause issues with a container that writes outside of itself and can screw up the UID, so I've omitted this flag.
My issue was actually caused by SELinux, so I disabled it with this --security-opt label=disable
.
I also tested the container without the additional flags --tty
and --interactive
and was able to successfully run a zola build
and zola serve
without them.
Here is the command I was able to successfully use to run on a Windows host:
docker run -it --rm -v "$(pwd):/app" --workdir /app -p 8080:8080 ghcr.io/getzola/zola:v0.17.2 serve --interface 0.0.0.0 --port 8080 --base-url localhost
The -it
flag is optional. --rm
(also optional), instructs docker to clean up after the command ends.
I wasn't able to get live updates working. I think it might be due to the way docker runs on Windows (via WSL).