From b840bb15aadfd7800c5b85d85609814e3019d19c Mon Sep 17 00:00:00 2001 From: Adam Samalik Date: Nov 16 2018 20:26:37 +0000 Subject: using podman on Fedora — root not required anymore --- diff --git a/README.md b/README.md index e5ee257..f10a398 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ This repo includes scripts to build and preview the contents of this repository. **NOTE**: Please note that if you reference pages from other repositoreis, such links will be broken in this local preview as it only builds this repository. If you want to rebuild the whole Fedora Docs site, please see [the Fedora Docs build repository](https://pagure.io/fedora-docs/docs-fp-o/) for instructions. -Both scripts use docker, so please make sure you have it installed on your system. Please see below for instructions. +Both scripts work on Fedora (using Podman) and macOS (using Docker). To build and preview the site, run: @@ -35,9 +35,10 @@ $ ./build.sh && ./preview.sh The result will be available at http://localhost:8080 -### Installing docker on Fedora +### Installing Podman on Fedora + +Fedora Workstation doesn't come with Podman preinstalled by default — so you might need to install it using the following command: ``` -$ sudo dnf install docker -$ sudo systemctl start docker && sudo systemctl enable docker +$ sudo dnf install podman ``` diff --git a/build.sh b/build.sh index c9349e3..1e4db2d 100755 --- a/build.sh +++ b/build.sh @@ -1,16 +1,46 @@ #!/bin/sh +image="docker.io/antora/antora" +cmd="--html-url-extension-style=indexify site.yml" + if [ "$(uname)" == "Darwin" ]; then # Running on macOS. # Let's assume that the user has the Docker CE installed # which doesn't require a root password. - docker run --rm -it -v $(pwd):/antora antora/antora --html-url-extension-style=indexify site.yml + echo "" + echo "This build script is using Docker container runtime to run the build in an isolated environment." + echo "" + docker run --rm -it -v $(pwd):/antora $image $cmd elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then # Running on Linux. - # Let's assume that it's running the Docker deamon + # Check whether podman is available, else faill back to docker # which requires root. - echo "" - echo "This build script is using Docker to run the build in an isolated environment. You might be asked for a root password in order to start it." -sudo docker run --rm -it -v $(pwd):/antora:z antora/antora --html-url-extension-style=indexify site.yml + + if [ -f /usr/bin/podman ]; then + echo "" + echo "This build script is using Podman to run the build in an isolated environment." + echo "" + podman run --rm -it -v $(pwd):/antora:z $image $cmd + + elif [ -f /usr/bin/docker ]; then + echo "" + echo "This build script is using Docker to run the build in an isolated environment." + echo "" + + if groups | grep -wq "docker"; then + docker run --rm -it -v $(pwd):/antora:z $image $cmd + else + echo "" + echo "This build script is using $runtime to run the build in an isolated environment. You might be asked for your password." + echo "You can avoid this by adding your user to the 'docker' group, but be aware of the security implications. See https://docs.docker.com/install/linux/linux-postinstall/." + echo "" + sudo docker run --rm -it -v $(pwd):/antora:z $image $cmd + fi + else + echo "" + echo "Error: Container runtime haven't been found on your system. Fix it by:" + echo "$ sudo dnf install podman" + exit 1 + fi fi diff --git a/preview.sh b/preview.sh index acab783..aeed9f1 100755 --- a/preview.sh +++ b/preview.sh @@ -5,14 +5,13 @@ if [ "$(uname)" == "Darwin" ]; then # Let's assume that the user has the Docker CE installed # which doesn't require a root password. echo "The preview will be available at http://localhost:8080/" - docker run --rm -v $(pwd)/public:/usr/share/nginx/html:ro -p 8080:80 nginx + docker run --rm -v $(pwd):/antora:ro -v $(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 8080:80 nginx elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then # Running on Linux. - # Let's assume that it's running the Docker deamon - # which requires root. + # Fedora Workstation has python3 installed as a default, so using that echo "" - echo "This build script is using Docker to run the build in an isolated environment. You might be asked for a root password in order to start it." - echo "The preview will be available at http://localhost:8080/" - sudo docker run --rm -v $(pwd)/public:/usr/share/nginx/html:ro -p 8080:80 nginx + echo "The preview is available at http://localhost:8080" + echo "" + python3 -m http.server --directory ./public 8080 fi