- Linux environment with Docker Engine installed
- Docker Compose plugin (
docker compose) - Make
- Permission to edit
/etc/hosts - Port
443available on the host (used by NGINX HTTPS)
Makefile(automation entry points)srcs/docker-compose.yml(service orchestration)srcs/.env(non-sensitive runtime configuration)srcs/requirements/(Dockerfiles/config/scripts per service)secrets/(sensitive credentials, local only)
Update srcs/.env with your target values:
DOMAIN_NAMEDB_NAMEDB_USERDB_HOSTWP_URLWP_TITLE
Example (current project format):
DOMAIN_NAME=anikitin.42.fr
DB_NAME=wordpress
DB_USER=wpuser
DB_HOST=mariadb
WP_URL=https://anikitin.42.fr
WP_TITLE=InceptionNote: in this project, passwords are not stored in .env; they are provided via Docker secrets.
Create the secrets/ directory at repository root and add:
secrets/credentials.txtsecrets/db_password.txtsecrets/db_root_password.txt
These files are mounted as Docker secrets by Compose and are required for service initialization.
Add this entry to your host /etc/hosts:
127.0.0.1 anikitin.42.fr
From repository root:
makeThis creates data directories, builds images, and launches the stack.
docker compose -f srcs/docker-compose.yml --env-file srcs/.env up --buildIf you change a Dockerfile or an entrypoint script, rebuild and relaunch:
docker compose -f srcs/docker-compose.yml --env-file srcs/.env up --buildTo rebuild only one service:
docker compose -f srcs/docker-compose.yml --env-file srcs/.env up --build nginx
docker compose -f srcs/docker-compose.yml --env-file srcs/.env up --build wordpress
docker compose -f srcs/docker-compose.yml --env-file srcs/.env up --build mariadbmake build # build images only
make down # stop and remove containers/network
make logs # follow service logs
make clean # stop stack and remove named volumes
make fclean # full cleanup: containers, images, volumes, host data
make re # full rebuild from scratchdocker compose -f srcs/docker-compose.yml --env-file srcs/.env ps
docker compose -f srcs/docker-compose.yml --env-file srcs/.env logs -f
docker compose -f srcs/docker-compose.yml --env-file srcs/.env logs nginx
docker compose -f srcs/docker-compose.yml --env-file srcs/.env logs wordpress
docker compose -f srcs/docker-compose.yml --env-file srcs/.env logs mariadb
docker compose -f srcs/docker-compose.yml --env-file srcs/.env down
docker compose -f srcs/docker-compose.yml --env-file srcs/.env down --volumesdocker exec -it nginx /bin/bash
docker exec -it wordpress /bin/bash
docker exec -it mariadb /bin/bashdocker volume ls
docker volume inspect inception_wordpress_data
docker volume inspect inception_mariadb_dataNote: volume names can be prefixed by the Compose project name.
Persistent service data is stored through Docker named volumes:
wordpress_datamounted to/var/www/htmlinwordpressandnginxmariadb_datamounted to/var/lib/mysqlinmariadb
In this project, these named volumes are configured to store data on host paths:
/home/anikitin/data/wordpress/home/anikitin/data/mariadb
Persistence behavior:
- Data survives container/image recreation (
make down,make, rebuilds). - Data is removed by
make clean(volume removal) and fully purged bymake fclean(volumes + host data directories).