add: wordpress docker

This commit is contained in:
mcolonna 2025-06-09 15:37:05 +02:00
parent 2484c20af5
commit aa2a0d6f71
11 changed files with 137 additions and 159 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
__*
.__*

View file

@ -1,11 +1,14 @@
# TODO(vm) data is supposed to be in $HOME/data/
WWW_PATH=__www/ # TODO to change
BUILD_PATH=__build/
DOCKER=docker
SRC_COMPOSE=srcs/
.ONESHELL :
.SHELLFLAGS = -eu -c
.PHONY : run help
.PHONY : run install uninstall debug re help shell
### pretty logs ####
@ -19,25 +22,71 @@ _ECHO = echoo(){ \
## Run the compose.
run :
run : $(WWW_PATH)
@$(_ECHO)
echoo "Running '$(SRC_COMPOSE)'..."
echo "$ cd -- $(SRC_COMPOSE)"
cd -- $(SRC_COMPOSE)
echo "$ $(DOCKER) compose up --build"
$(DOCKER) compose up --build
INCEPTION_WWW_PATH="$(shell realpath $(WWW_PATH))" $(DOCKER) compose up --build
## Run the compose with debug flags.
debug :
$(MAKE) DEBUG=yes run
## Create WWW_PATH from wordpress' release.
install : $(WWW_PATH)
$(WWW_PATH) :
@$(_ECHO)
echoo "Creating $(WWW_PATH) directory from wordpress release..."
rm -rf $(BUILD_PATH)
# download and uncompress release
mkdir -p $(BUILD_PATH)"/www/"
curl https://wordpress.org/latest.tar.gz | tar zx -C $(BUILD_PATH)/www
# move in WWW_PATH
rm -rf -- $(WWW_PATH)
mv $(BUILD_PATH)"/www/wordpress" $(WWW_PATH)
rm -rf $(BUILD_PATH)
## Remove WWW_PATH.
uninstall :
@$(_ECHO)
echoo "Removing $(WWW_PATH)..."
rm -r $(WWW_PATH) || true
## 'uninstall' then 'install'
re : uninstall install
@$(_ECHO)
echo
echo "run \`make\` or \`make run\` to run the docker."
## TODO docs
shell :
@$(_ECHO)
echoo "Running shell inside '$(SRC_COMPOSE)' (container nginx)..."
cd -- $(SRC_COMPOSE)
INCEPTION_WWW_PATH="$(shell realpath $(WWW_PATH))" $(DOCKER) compose run --build nginx sh
## Show help
help :
@$(_ECHO)
echo "run Run the compose."
echo "debug Run the compose with debug flags."
echo "That's all lol"
echo
echo "run Run the compose, install WWW_PATH if necessary."
echo "install Create WWW_PATH from wordpress' release."
echo "uninstall Remove WWW_PATH."
echo "re 'uninstall' then 'install'."
# TODO docs shell
echo
echo "WWW_PATH is the volume directory where WordPress is installed."
echo "you might want to reset the WWW_PATH variable in the Makefile."
echo

View file

@ -6,8 +6,25 @@ services:
build: ./requirements/nginx/
ports:
- 4433:443
depends_on:
- wordpress
volumes:
- www:/www:ro
# domainname: mcolonna.42.fr # TODO(vm) useful? # TODO(any)(nocopy)
wordpress:
build: ./requirements/wordpress
volumes:
- www:/www:rw
volumes:
www:
driver: local
driver_opts:
o: bind
type: none
device: "${INCEPTION_WWW_PATH:?error}"
### services ###
# image:
# build:

View file

@ -26,8 +26,6 @@ RUN apk fix
# add config
RUN rm /etc/nginx/nginx.conf
COPY conf/ /etc/nginx/
RUN rm -r /usr/share/nginx/html
COPY www/ /usr/share/nginx/html
# start
CMD ["nginx", "-g", "daemon off;"]

View file

@ -35,12 +35,16 @@ http {
access_log /var/log/nginx/mcolonna.42.fr.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
root /www;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass wordpress:9000;
}
}
# TODO(more) error_page 404 /404.html;
# TODO(more) error_page 500 502 503 504 /50x.html;
}
}

View file

@ -0,0 +1,15 @@
# from https://exampleconfig.com/view/nginx-ubuntu20-04-etc-nginx-snippets-fastcgi-php-conf
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;

View file

@ -1,143 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>yippee</title>
<style>
* {
animation-play-state: paused;
}
@font-face
{
font-family: "Varela Round";
src: url("/VarelaRound.ttf");
}
html {
height: 100%;
}
body {
height: 100%;
margin: 0;
padding: 0;
background: #000000;
}
.yippee {
font-size: 3em;
font-family: "Varela Round";
font-weight: bold;
}
@keyframes rotationoeoeoe {
0% { transform: rotate(0); }
100% { transform: rotate(360deg); }
}
@keyframes pulseyayaya {
0% { transform: scale(1); }
50% { transform: scale(1.4); }
100% { transform: scale(1); }
}
@keyframes rainbow {
0% { color: #f00; }
17% { color: #f00; }
17% { color: #ff0; }
33% { color: #ff0; }
33% { color: #0f0; }
50% { color: #0f0; }
50% { color: #0ff; }
67% { color: #0ff; }
67% { color: #00f; }
83% { color: #00f; }
83% { color: #f0f; }
100% { color: #f0f; }
100% { color: #f00; }
}
.yippee {
animation-name: rotationoeoeoe;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
.yippee > .yippeeinner {
animation-name: pulseyayaya;
animation-duration: .8s;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
}
#one, #two, #three {
width: 100%;
height: 100%;
position: absolute;
display: flex;
align-items: center;
justify-content: center;
animation-name: rainbow;
animation-duration: 1s;
animation-iteration-count: infinite;
}
#one {
z-index: 3;
color: #f00;
animation-delay: .0s;
}
#one > .yippee {
animation-delay: .0s;
}
#one > .yippee > .yippeeinner {
animation-delay: .0s;
}
#two {
z-index: 2;
color: #0f0;
opacity: .50;
animation-delay: .1s;
}
#two > .yippee {
animation-delay: .05s;
}
#two > .yippee > .yippeeinner {
animation-delay: .05s;
}
#three {
z-index: 1;
color: #00f;
opacity: .33;
animation-delay: .2s;
}
#three > .yippee {
animation-delay: .1s;
}
#three > .yippee > .yippeeinner {
animation-delay: .1s;
}
* {
animation-play-state: running;
}
</style>
</head>
<body>
<div id="one"><div class="yippee"><div class="yippeeinner">yippee</div></div></div>
<div id="two"><div class="yippee"><div class="yippeeinner">yippee</div></div></div>
<div id="three"><div class="yippee"><div class="yippeeinner">yippee</div></div></div>
</body>
</html>

View file

@ -0,0 +1,24 @@
# TODO(any)(latest)
FROM alpine:latest
# EXPOSE
EXPOSE 9000
# install packages
RUN apk update
RUN apk add php-fpm
RUN apk fix
RUN addgroup -S www
RUN adduser -D -S -G www www
#RUN apk add curl
# install wordpress
# RUN mkdir -p /www
# RUN curl https://wordpress.org/latest.tar.gz | tar zx -C /www
# add config
COPY /conf/ /etc/php83/
# start
CMD ["php-fpm83", "-F"]

View file

@ -0,0 +1 @@
include=/etc/php83/php-fpm.d/*.conf

View file

@ -0,0 +1,11 @@
[www]
user = www
group = www
listen = wordpress:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3