Skip to content

Latest commit

 

History

History
143 lines (108 loc) · 3.91 KB

File metadata and controls

143 lines (108 loc) · 3.91 KB

DEV_DOC

1. Environment setup from scratch

Prerequisites

  • Linux environment with Docker Engine installed
  • Docker Compose plugin (docker compose)
  • Make
  • Permission to edit /etc/hosts
  • Port 443 available on the host (used by NGINX HTTPS)

Repository structure (developer-relevant)

  • 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)

Configuration files

Update srcs/.env with your target values:

  • DOMAIN_NAME
  • DB_NAME
  • DB_USER
  • DB_HOST
  • WP_URL
  • WP_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=Inception

Note: in this project, passwords are not stored in .env; they are provided via Docker secrets.

Secrets

Create the secrets/ directory at repository root and add:

  • secrets/credentials.txt
  • secrets/db_password.txt
  • secrets/db_root_password.txt

These files are mounted as Docker secrets by Compose and are required for service initialization.

Domain mapping

Add this entry to your host /etc/hosts:

127.0.0.1   anikitin.42.fr

2. Build and launch

Using Makefile (recommended)

From repository root:

make

This creates data directories, builds images, and launches the stack.

Equivalent Docker Compose command

docker compose -f srcs/docker-compose.yml --env-file srcs/.env up --build

Rebuild after changes

If you change a Dockerfile or an entrypoint script, rebuild and relaunch:

docker compose -f srcs/docker-compose.yml --env-file srcs/.env up --build

To 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 mariadb

3. Container and volume management commands

Makefile commands

make 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 scratch

Direct Compose commands

docker 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 --volumes

Access running containers

docker exec -it nginx /bin/bash
docker exec -it wordpress /bin/bash
docker exec -it mariadb /bin/bash

Useful Docker inspection commands

docker volume ls
docker volume inspect inception_wordpress_data
docker volume inspect inception_mariadb_data

Note: volume names can be prefixed by the Compose project name.

4. Data storage and persistence

Persistent service data is stored through Docker named volumes:

  • wordpress_data mounted to /var/www/html in wordpress and nginx
  • mariadb_data mounted to /var/lib/mysql in mariadb

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 by make fclean (volumes + host data directories).