zola icon indicating copy to clipboard operation
zola copied to clipboard

Use with Docker - Missing config file

Open roukmoute opened this issue 1 year ago • 2 comments

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

roukmoute avatar Aug 02 '22 16:08 roukmoute

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.

b-dont avatar Mar 27 '23 20:03 b-dont

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).

cskwrd avatar Oct 25 '23 14:10 cskwrd