mirror of
https://github.com/getzola/zola
synced 2024-11-10 06:14:19 +00:00
Add multi-stage dockerfile build example (#2327)
* Add multi-stage dockerfile build example * Simplify install instructions, add docker image deployment example
This commit is contained in:
parent
9097703b51
commit
0b46736aff
2 changed files with 49 additions and 0 deletions
36
docs/content/documentation/deployment/docker-image.md
Normal file
36
docs/content/documentation/deployment/docker-image.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
+++
|
||||
title = "Docker image"
|
||||
weight = 90
|
||||
+++
|
||||
|
||||
If you have to distribute a Zola based web site through Docker, it's easy to do with a multi-stage build.
|
||||
|
||||
Here is an example that builds the current folder, and put the result in a docker image that will be served by
|
||||
[static-web-server](https://static-web-server.net/), a minimalist web server written in rust.
|
||||
|
||||
Of course, you may want to replace the second stage with another static web server like Nginx or Apache.
|
||||
|
||||
```Dockerfile
|
||||
FROM ghcr.io/getzola/zola:v0.17.1 as zola
|
||||
|
||||
COPY . /project
|
||||
WORKDIR /project
|
||||
RUN ["zola", "build"]
|
||||
|
||||
FROM ghcr.io/static-web-server/static-web-server:2
|
||||
WORKDIR /
|
||||
COPY --from=zola /project/public /public
|
||||
```
|
||||
|
||||
To build your website as a docker image, you then run:
|
||||
```shell
|
||||
docker build -t my_website:latest .
|
||||
```
|
||||
|
||||
To test your site, just run the docker image and browse [http://localhost:8000](http://localhost:8000)
|
||||
|
||||
```
|
||||
docker run --rm -p 8000:80 my_website:latest
|
||||
```
|
||||
|
||||
Note that, if you want to be able to use your docker image from multiple locations, you'll have to set `base_url` to `/`.
|
|
@ -178,6 +178,19 @@ You can now browse http://localhost:8080.
|
|||
> port between 1024 and 9000 for live reload. The new docker command would be
|
||||
> `$ docker run -u "$(id -u):$(id -g)" -v $PWD:/app --workdir /app -p 8080:8080 -p 1024:1024 ghcr.io/getzola/zola:v0.17.1 serve --interface 0.0.0.0 --port 8080 --base-url localhost`
|
||||
|
||||
#### Multi-stage build
|
||||
|
||||
Since there is no shell in the Zola docker image, if you want to use it from inside a Dockerfile, you have to use the
|
||||
exec form of `RUN`, like:
|
||||
|
||||
```Dockerfile
|
||||
FROM ghcr.io/getzola/zola:v0.17.1 as zola
|
||||
|
||||
COPY . /project
|
||||
WORKDIR /project
|
||||
RUN ["zola", "build"]
|
||||
```
|
||||
|
||||
|
||||
## Windows
|
||||
|
||||
|
|
Loading…
Reference in a new issue