feat: docker configuration

This commit is contained in:
djerfy 2023-08-19 18:35:03 +02:00
parent 41ae76c10e
commit a563522ec0
No known key found for this signature in database
GPG Key ID: 1B18B89ED4A4A975
5 changed files with 67 additions and 0 deletions

4
.dockerignore Normal file
View File

@ -0,0 +1,4 @@
dist
node_modules
README.md
.vscode

27
Dockerfile Normal file
View File

@ -0,0 +1,27 @@
############################
# Docker build environment #
############################
FROM node:18.16.1-bookworm AS build
WORKDIR /build
COPY . .
RUN npm i
RUN npm run build
############################
# Docker final environment #
############################
FROM caddy:2.7.4-alpine
EXPOSE 80
WORKDIR /var/www/html
COPY --from=build /build/dist/public-pool-ui .
COPY docker/Caddyfile.tpl /etc/Caddyfile.tpl
COPY docker/entrypoint.sh /entrypoint.sh
CMD ["/bin/sh", "/entrypoint.sh"]

View File

@ -37,3 +37,17 @@ Install pm2 (https://pm2.keymetrics.io/)
```bash
$ pm2 serve --spa dist/public-pool-ui/ 3335 --name ui
```
## Docker
```bash
$ docker build -t public-pool-ui .
$ docker run --name public-pool-ui --rm -p 8080:80 public-pool-ui
```
From Docker commands, website will be accessible on [http://localhost:8080](http://localhost:8080). By default Caddy server listen on port 80, but we bind it to port 8080 which allows you to launch image without root permissions.
Available variables:
* `DOMAIN`: website domain (default: `localhost`)
* `LOGLEVEL`: loglevel in stdout (default: `INFO`)
* `LOGFORMAT`: log format in stdout (default: `json`)

10
docker/Caddyfile.tpl Normal file
View File

@ -0,0 +1,10 @@
http://%%DOMAIN%% {
root * /var/www/html
file_server
log {
output stdout
format %%LOGFORMAT%%
level %%LOGLEVEL%%
}
}

12
docker/entrypoint.sh Normal file
View File

@ -0,0 +1,12 @@
#!/bin/sh
if [ ! -e "/etc/Caddyfile" ]; then
sed -i "s#%%DOMAIN%%#${DOMAIN:-localhost}#g" /etc/Caddyfile.tpl
sed -i "s#%%LOGLEVEL%%#${LOGLEVEL:-INFO}#g" /etc/Caddyfile.tpl
sed -i "s#%%LOGFORMAT%%#${LOGFORMAT:-json}#g" /etc/Caddyfile.tpl
mv /etc/Caddyfile.tpl /etc/Caddyfile
else
rm -f /etc/Caddyfile.tpl
fi
exec caddy run --config /etc/Caddyfile