mirror of
https://github.com/chevereto/docker.git
synced 2025-12-16 13:09:47 +01:00
add default project, supports userland docker-compose
This commit is contained in:
119
Makefile
119
Makefile
@@ -1,37 +1,33 @@
|
||||
SOURCE ?= ~/git/chevereto/v4
|
||||
TARGET ?= prod# prod|dev
|
||||
VERSION ?= 4.0
|
||||
PHP ?= 8.1
|
||||
DOCKER_USER ?= www-data
|
||||
HOSTNAME ?= localhost
|
||||
HOSTNAME_PATH ?= /
|
||||
PROTOCOL ?= http
|
||||
|
||||
NAMESPACE ?= local
|
||||
PROJECT = ${NAMESPACE}_chevereto-build
|
||||
CONTAINER_BASENAME ?= ${NAMESPACE}_chevereto-build-${VERSION}
|
||||
TAG_BASENAME ?= ${NAMESPACE}_chevereto-build:${VERSION}
|
||||
|
||||
NAMESPACE ?= chevereto
|
||||
SERVICE ?= php
|
||||
LICENSE ?= $(shell stty -echo; read -p "Chevereto V4 License key: 🔑" license; stty echo; echo $$license)
|
||||
|
||||
VERSION_DOTLESS = $(shell echo \${VERSION} | tr -d '.')
|
||||
PHP_DOTLESS = $(shell echo \${PHP} | tr -d '.')
|
||||
|
||||
PORT ?= 8420
|
||||
VERSION_DOTLESS = $(shell echo \${VERSION} | tr -d '.')
|
||||
|
||||
FEEDBACK = $(shell echo 👉 V\${VERSION} \${NAMESPACE} [PHP \${PHP}] \(\${DOCKER_USER}\))
|
||||
FEEDBACK_SHORT = $(shell echo 👉 V\${VERSION} [PHP \${PHP}] \(\${DOCKER_USER}\))
|
||||
URL = ${PROTOCOL}://${HOSTNAME}:${PORT}/
|
||||
PROJECT = $(shell [[ \${TARGET} == "prod" ]] && echo \${NAMESPACE}_chevereto || echo \${NAMESPACE}_chevereto-${TARGET})
|
||||
CONTAINER_BASENAME ?= ${NAMESPACE}_chevereto-${VERSION}
|
||||
TAG_BASENAME ?= ${NAMESPACE}_chevereto:${VERSION}
|
||||
|
||||
ENDPOINT = ${PROTOCOL}://${HOSTNAME}
|
||||
ENDPOINT_CONTEXT = ${PORT}${HOSTNAME_PATH}
|
||||
|
||||
URL_PROD = ${ENDPOINT}:${ENDPOINT_CONTEXT}
|
||||
|
||||
PROJECT ?= compose
|
||||
PROJECT_COMPOSE = projects/${COMPOSE}.yml
|
||||
COMPOSE_SAMPLE = projects/prod.yml
|
||||
COMPOSE ?= docker-compose
|
||||
PROJECT_COMPOSE = ${COMPOSE}.yml
|
||||
COMPOSE_SAMPLE = default.yml
|
||||
COMPOSE_FILE = $(shell [[ -f \${PROJECT_COMPOSE} ]] && echo \${PROJECT_COMPOSE} || echo \${COMPOSE_SAMPLE})
|
||||
|
||||
FEEDBACK = $(shell echo 👉 \${TARGET} V\${VERSION} \${NAMESPACE} [PHP \${PHP}] \(\${DOCKER_USER}\))
|
||||
FEEDBACK_SHORT = $(shell echo 👉 \${TARGET} V\${VERSION} [PHP \${PHP}] \(\${DOCKER_USER}\))
|
||||
|
||||
LICENSE ?= $(shell stty -echo; read -p "Chevereto V4 License key: 🔑" license; stty echo; echo $$license)
|
||||
|
||||
DOCKER_COMPOSE = $(shell echo docker compose -p \${PROJECT} -f \${COMPOSE_FILE})
|
||||
|
||||
feedback:
|
||||
@./scripts/logo.sh
|
||||
@echo "${FEEDBACK}"
|
||||
@@ -39,12 +35,17 @@ feedback:
|
||||
feedback--short:
|
||||
@echo "${FEEDBACK_SHORT}"
|
||||
|
||||
feedback--prod:
|
||||
@echo "${URL_PROD}"
|
||||
|
||||
feedback--compose:
|
||||
@echo "🐋 ${COMPOSE_FILE}"
|
||||
|
||||
feedback--url:
|
||||
@echo "🌎 ${URL}"
|
||||
|
||||
feedback--volumes:
|
||||
@echo "${PROJECT}_database"
|
||||
@echo "${PROJECT}_assets"
|
||||
@echo "${PROJECT}_storage"
|
||||
|
||||
# Docker
|
||||
|
||||
image: feedback--short
|
||||
@@ -52,32 +53,22 @@ image: feedback--short
|
||||
@LICENSE=${LICENSE} \
|
||||
VERSION=${VERSION} \
|
||||
./scripts/chevereto.sh
|
||||
@echo "* Building httpd image"
|
||||
@rm -rf ./chevereto/app/vendor
|
||||
@docker build . \
|
||||
-f http.Dockerfile \
|
||||
-t ${TAG_BASENAME}_http
|
||||
@echo "* Building PHP image"
|
||||
@docker build . \
|
||||
-f php.Dockerfile \
|
||||
-f Dockerfile \
|
||||
-t ${TAG_BASENAME}_php
|
||||
|
||||
image-custom: feedback--short
|
||||
@echo "* Building PHP image"
|
||||
@docker build . \
|
||||
-f php.Dockerfile \
|
||||
-f Dockerfile \
|
||||
-t ${TAG_BASENAME}_php
|
||||
@echo "* Building httpd image"
|
||||
@docker build . \
|
||||
-f http.Dockerfile \
|
||||
-t ${TAG_BASENAME}_http
|
||||
|
||||
image-httpd: feedback--short
|
||||
@echo "👉 Downloading source httpd.conf"
|
||||
@docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > httpd/httpd.conf
|
||||
@echo "👉 Adding chevereto.conf to httpd.conf"
|
||||
@cat httpd/chevereto.conf >> httpd/httpd.conf
|
||||
@echo "✅ httpd/httpd.conf updated"
|
||||
volume-cp:
|
||||
docker run --rm -it -v ${VOLUME_FROM}:/from -v ${VOLUME_TO}:/to alpine ash -c "cd /from ; cp -av . /to"
|
||||
|
||||
volume-rm:
|
||||
docker volume rm ${VOLUME}
|
||||
|
||||
bash: feedback
|
||||
@docker exec -it --user ${DOCKER_USER} \
|
||||
@@ -92,56 +83,52 @@ log-error: feedback
|
||||
|
||||
# docker compose
|
||||
|
||||
up: feedback feedback--compose feedback--prod
|
||||
up: feedback feedback--compose feedback--url
|
||||
@CONTAINER_BASENAME=${CONTAINER_BASENAME} \
|
||||
PORT=${PORT} \
|
||||
TAG_BASENAME=${TAG_BASENAME} \
|
||||
VERSION=${VERSION} \
|
||||
HOSTNAME=${HOSTNAME} \
|
||||
HOSTNAME_PATH=${HOSTNAME_PATH} \
|
||||
URL_PROD=${URL_PROD} \
|
||||
docker compose \
|
||||
-p ${PROJECT} \
|
||||
-f ${COMPOSE_FILE} \
|
||||
up
|
||||
URL=${URL} \
|
||||
${DOCKER_COMPOSE} up
|
||||
|
||||
up-d: feedback feedback--compose feedback--prod
|
||||
up-d: feedback feedback--compose feedback--url
|
||||
@CONTAINER_BASENAME=${CONTAINER_BASENAME} \
|
||||
PORT=${PORT} \
|
||||
TAG_BASENAME=${TAG_BASENAME} \
|
||||
VERSION=${VERSION} \
|
||||
HOSTNAME=${HOSTNAME} \
|
||||
HOSTNAME_PATH=${HOSTNAME_PATH} \
|
||||
URL_PROD=${URL_PROD} \
|
||||
docker compose \
|
||||
-p ${PROJECT} \
|
||||
-f ${COMPOSE_FILE} \
|
||||
up -d
|
||||
@echo "👉 ${URL_PROD}"
|
||||
URL=${URL} \
|
||||
${DOCKER_COMPOSE} up -d
|
||||
|
||||
stop: feedback feedback--compose
|
||||
@CONTAINER_BASENAME=${CONTAINER_BASENAME} \
|
||||
PORT=${PORT} \
|
||||
VERSION=${VERSION} \
|
||||
docker compose \
|
||||
-p ${PROJECT} \
|
||||
-f ${COMPOSE_FILE} \
|
||||
stop
|
||||
${DOCKER_COMPOSE} stop
|
||||
|
||||
start: feedback feedback--compose
|
||||
@CONTAINER_BASENAME=${CONTAINER_BASENAME} \
|
||||
PORT=${PORT} \
|
||||
VERSION=${VERSION} \
|
||||
${DOCKER_COMPOSE} start
|
||||
|
||||
restart: feedback feedback--compose
|
||||
@CONTAINER_BASENAME=${CONTAINER_BASENAME} \
|
||||
PORT=${PORT} \
|
||||
VERSION=${VERSION} \
|
||||
${DOCKER_COMPOSE} restart
|
||||
|
||||
down: feedback feedback--compose
|
||||
@CONTAINER_BASENAME=${CONTAINER_BASENAME} \
|
||||
PORT=${PORT} \
|
||||
VERSION=${VERSION} \
|
||||
docker compose \
|
||||
-p ${PROJECT} \
|
||||
-f ${COMPOSE_FILE} \
|
||||
down
|
||||
${DOCKER_COMPOSE} down
|
||||
|
||||
down--volumes: feedback feedback--compose
|
||||
@CONTAINER_BASENAME=${CONTAINER_BASENAME} \
|
||||
PORT=${PORT} \
|
||||
VERSION=${VERSION} \
|
||||
docker compose \
|
||||
-p ${PROJECT} \
|
||||
-f ${COMPOSE_FILE} \
|
||||
down --volumes
|
||||
${DOCKER_COMPOSE} down --volumes
|
||||
|
||||
66
default.yml
Normal file
66
default.yml
Normal file
@@ -0,0 +1,66 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
database:
|
||||
container_name: ${CONTAINER_BASENAME}_database
|
||||
image: mariadb:jammy
|
||||
networks:
|
||||
- chevereto
|
||||
volumes:
|
||||
- database:/var/lib/mysql
|
||||
restart: always
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"mysqladmin",
|
||||
"ping",
|
||||
"-u",
|
||||
"root",
|
||||
"-p$${MYSQL_ROOT_PASSWORD?REQUIRED}",
|
||||
]
|
||||
interval: 15s
|
||||
timeout: 30s
|
||||
retries: 5
|
||||
start_period: 15s
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
MYSQL_DATABASE: chevereto
|
||||
MYSQL_USER: chevereto
|
||||
MYSQL_PASSWORD: user_database_password
|
||||
|
||||
php:
|
||||
container_name: ${CONTAINER_BASENAME}_php
|
||||
image: ${TAG_BASENAME}_php
|
||||
depends_on:
|
||||
database:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- chevereto
|
||||
volumes:
|
||||
- storage:/var/www/html/images/
|
||||
- assets:/var/www/html/_assets/
|
||||
ports:
|
||||
- ${PORT}:80
|
||||
restart: always
|
||||
environment:
|
||||
CHEVERETO_DB_HOST: database
|
||||
CHEVERETO_DB_USER: chevereto
|
||||
CHEVERETO_DB_PASS: user_database_password
|
||||
CHEVERETO_DB_PORT: 3306
|
||||
CHEVERETO_DB_NAME: chevereto
|
||||
CHEVERETO_HOSTNAME: ${HOSTNAME}
|
||||
CHEVERETO_HOSTNAME_PATH: ${HOSTNAME_PATH}
|
||||
CHEVERETO_HTTPS: 0
|
||||
CHEVERETO_ASSET_STORAGE_TYPE: local
|
||||
CHEVERETO_ASSET_STORAGE_URL: ${URL}_assets/
|
||||
CHEVERETO_ASSET_STORAGE_BUCKET: /var/www/html/_assets/
|
||||
CHEVERETO_ENCRYPTION_KEY: yUwfiRh6anwqC/sIx3COCIZeMT9rxdbXkMDdfgyrM2M=
|
||||
|
||||
volumes:
|
||||
database:
|
||||
assets:
|
||||
storage:
|
||||
|
||||
networks:
|
||||
chevereto:
|
||||
Reference in New Issue
Block a user