| .env | .env | ||||
| backup-volumes/ | backup-volumes/ | ||||
| exclude-list | exclude-list | ||||
| root-volume/ | |||||
| tmp/ | tmp/ | ||||
| traefik-volumes/ | traefik-volumes/ | ||||
| webroot-remote/ | webroot-remote/ |
| backup_path="${PWD}/backup-volumes/${now}" | backup_path="${PWD}/backup-volumes/${now}" | ||||
| mkdir -p "${backup_path}" | mkdir -p "${backup_path}" | ||||
| volumes="db traefik-dynamic traefik-certs traefik-logs traefik-static webroot" | |||||
| volumes="db root traefik-dynamic traefik-certs traefik-logs traefik-static webroot" | |||||
| for volume in ${volumes}; do | for volume in ${volumes}; do | ||||
| mkdir -p "${backup_path}/${volume}" | mkdir -p "${backup_path}/${volume}" | ||||
| docker run \ | docker run \ |
| echo "Setting up docker volumes" | echo "Setting up docker volumes" | ||||
| docker volume create "${PREFIX}-db" | docker volume create "${PREFIX}-db" | ||||
| docker volume create "${PREFIX}-root" | |||||
| docker volume create "${PREFIX}-traefik-certs" | docker volume create "${PREFIX}-traefik-certs" | ||||
| docker volume create "${PREFIX}-traefik-dynamic" | docker volume create "${PREFIX}-traefik-dynamic" | ||||
| docker volume create "${PREFIX}-traefik-logs" | docker volume create "${PREFIX}-traefik-logs" |
| - PHP_UPLOAD_MAX_FILESIZE=${PHP_UPLOAD_MAX_FILESIZE} | - PHP_UPLOAD_MAX_FILESIZE=${PHP_UPLOAD_MAX_FILESIZE} | ||||
| - XDEBUG_CLIENT_HOST=${XDEBUG_CLIENT_HOST} | - XDEBUG_CLIENT_HOST=${XDEBUG_CLIENT_HOST} | ||||
| - XDEBUG_MODE=${XDEBUG_MODE} | - XDEBUG_MODE=${XDEBUG_MODE} | ||||
| hostname: ${PREFIX}-app | |||||
| image: ${APP_IMAGE_TAG} | image: ${APP_IMAGE_TAG} | ||||
| labels: | labels: | ||||
| - traefik.enable=true | - traefik.enable=true | ||||
| - traefik.http.routers.${PREFIX}-webssl.tls=true | - traefik.http.routers.${PREFIX}-webssl.tls=true | ||||
| - traefik.http.services.${PREFIX}-webssl.loadbalancer.server.port=80 | - traefik.http.services.${PREFIX}-webssl.loadbalancer.server.port=80 | ||||
| volumes: | volumes: | ||||
| - root:/root | |||||
| - webroot:/var/www/html | - webroot:/var/www/html | ||||
| - wp-cli-cache:/var/www/.wp-cli | - wp-cli-cache:/var/www/.wp-cli | ||||
| db: | db: | ||||
| volumes: | volumes: | ||||
| db: | db: | ||||
| name: ${PREFIX}-db | name: ${PREFIX}-db | ||||
| root: | |||||
| name: ${PREFIX}-root | |||||
| traefik-certs: | traefik-certs: | ||||
| name: ${PREFIX}-traefik-certs | name: ${PREFIX}-traefik-certs | ||||
| traefik-dynamic: | traefik-dynamic: |
| . "${PWD}/env_files/manage.env" | . "${PWD}/env_files/manage.env" | ||||
| set +a | set +a | ||||
| volumes="certs dynamic logs static webroot" | |||||
| volumes="certs dynamic logs root static webroot" | |||||
| for volume in ${volumes}; do | for volume in ${volumes}; do | ||||
| mount_path="${PWD}/traefik-volumes/${volume}" | mount_path="${PWD}/traefik-volumes/${volume}" | ||||
| volume_path="${DOCKER_VOLUMES_PATH}/${PREFIX}-traefik-${volume}/_data" | volume_path="${DOCKER_VOLUMES_PATH}/${PREFIX}-traefik-${volume}/_data" | ||||
| mount_path="${PWD}/${volume}-volume" | mount_path="${PWD}/${volume}-volume" | ||||
| volume_path="${DOCKER_VOLUMES_PATH}/${PREFIX}-${volume}/_data" | volume_path="${DOCKER_VOLUMES_PATH}/${PREFIX}-${volume}/_data" | ||||
| fi | fi | ||||
| if [ "${volume}" = "root" ]; then | |||||
| mount_path="${PWD}/${volume}-volume" | |||||
| volume_path="${DOCKER_VOLUMES_PATH}/${PREFIX}-${volume}/_data" | |||||
| fi | |||||
| sudo -u "${MOUNT_USER}" mkdir -p "${mount_path}" | sudo -u "${MOUNT_USER}" mkdir -p "${mount_path}" | ||||
| if mountpoint "${mount_path}" -q; then | if mountpoint "${mount_path}" -q; then | ||||
| echo "exiting because something is mounted at ${mount_path}" | echo "exiting because something is mounted at ${mount_path}" |
| docker compose rm | docker compose rm | ||||
| docker network rm "${PREFIX}" | docker network rm "${PREFIX}" | ||||
| docker volume rm "${PREFIX}-db" | docker volume rm "${PREFIX}-db" | ||||
| docker volume rm "${PREFIX}-root" | |||||
| docker volume rm "${PREFIX}-traefik-certs" | docker volume rm "${PREFIX}-traefik-certs" | ||||
| docker volume rm "${PREFIX}-traefik-dynamic" | docker volume rm "${PREFIX}-traefik-dynamic" | ||||
| docker volume rm "${PREFIX}-traefik-logs" | docker volume rm "${PREFIX}-traefik-logs" |
| exit 1 | exit 1 | ||||
| fi | fi | ||||
| volumes="certs dynamic logs static webroot" | |||||
| volumes="certs dynamic logs root static webroot" | |||||
| for volume in ${volumes}; do | for volume in ${volumes}; do | ||||
| mount_path="${PWD}/traefik-volumes/${volume}" | mount_path="${PWD}/traefik-volumes/${volume}" | ||||
| if [ "${volume}" = "webroot" ]; then | if [ "${volume}" = "webroot" ]; then | ||||
| mount_path="${PWD}/${volume}-volume" | mount_path="${PWD}/${volume}-volume" | ||||
| fi | fi | ||||
| if [ "${volume}" = "root" ]; then | |||||
| mount_path="${PWD}/${volume}-volume" | |||||
| fi | |||||
| if mountpoint "${mount_path}" -q; then | if mountpoint "${mount_path}" -q; then | ||||
| echo "umounting ${mount_path}" | echo "umounting ${mount_path}" | ||||
| umount "${mount_path}" | umount "${mount_path}" |
| docker exec \ | docker exec \ | ||||
| -e SHELLOPTS=vi \ | -e SHELLOPTS=vi \ | ||||
| -e HISTFILE=/var/www/html/.bash_history \ | |||||
| -it --user www-data \ | -it --user www-data \ | ||||
| "${PREFIX}-app" \ | "${PREFIX}-app" \ | ||||
| /bin/bash | /bin/bash |