Compare commits

...

4 Commits

Author SHA1 Message Date
Mayel b1375c5cc3 readme 2021-07-15 00:02:48 +02:00
Mayel 2e7a8c66f1 configurable php version, root_path, fix db host 2021-07-14 23:57:43 +02:00
Mayel 32d2f3f04f fix tar command 2021-07-14 21:56:31 +02:00
Mayel 21ab89946a make database optional 2021-07-14 21:43:37 +02:00
6 changed files with 64 additions and 43 deletions

View File

@ -5,9 +5,16 @@ DOMAIN=example.com
#EXTRA_DOMAINS=', `www.example.com`'
LETS_ENCRYPT_ENV=production
## Extensions you do NOT need, out of this list of installed extensions: https://github.com/adhocore/docker-phpfpm#php80
#PHP_EXTENSIONS_TO_DISABLE="calendar"
ROOT_PATH=/var/www/html
PHP_VERSION=7.4
# environment for PHP frameworks like laravel/symphony
APP_ENV=prod
## Extra extensions you need
#PHP_EXTENSIONS="calendar"
# Optional database
#COMPOSE_FILE="compose.yml:compose.mariadb.yml"
SECRET_DB_ROOT_PASSWORD_VERSION=v1
SECRET_DB_PASSWORD_VERSION=v1

View File

@ -1,7 +1,7 @@
# custom-php
Coöp Cloud + [PHP](https://php.org) + MariaDB + Nginx = 🥳
Coöp Cloud + [PHP](https://php.org) + MariaDB (optional) + Nginx = 🥳
<!-- metadata -->
@ -22,10 +22,16 @@ Coöp Cloud + [PHP](https://php.org) + MariaDB + Nginx = 🥳
2. Deploy [`coop-cloud/traefik`][cc-traefik]
3. `abra app new custom-php --secrets` (optionally with `--pass` if you'd like
to save secrets in `pass`)
4. `abra app YOURAPPDOMAIN config` - be sure to change `$DOMAIN` to something that resolves to
4. `abra app YOURAPPDOMAIN config`
- be sure to change `$DOMAIN` to something that resolves to
your Docker swarm box
5. `abra app YOURAPPDOMAIN deploy`
6. Copy your site files using something like: `abra app YOURAPPDOMAIN cp index.html app:/var/www/html/` or if you want to copy an entire directory: `tar cf - ./mysite | abra app YOURAPPDOMAIN cp - app:/var/www/html/`
- if you need to enable the optional database, uncomment `COMPOSE_FILE="compose.yml:compose.mariadb.yml"` in which case configure your site to load the DB credentials from env:
- `getenv('DB_NAME');`
- `getenv('DB_HOST');`
- `getenv('DB_USER');`
- `@file_get_contents(getenv('DB_PASSWORD_FILE'));`
5. Deploy with `abra app YOURAPPDOMAIN deploy`
6. Copy your site files using something like: `abra app YOURAPPDOMAIN cp index.html app:/var/www/html/` or if you want to copy an entire directory: `tar -cf - -C my_site/path/here . | abra app YOURAPPDOMAIN cp - app:/var/www/html/`
6. Use [restore functionality](https://docs.coopcloud.tech/backup-restore/) to import a SQL file into the db
6. Open the configured domain in your browser to check all is good

View File

@ -1,4 +1,5 @@
export NGINX_DEFAULT_CONF_VERSION=v6
# export PHP_VERSION=7.4
export NGINX_DEFAULT_CONF_VERSION=v7
export PHP_UPLOADS_CONF_VERSION=v3
export ENTRYPOINT_CONF_VERSION=v2
export ENTRYPOINT_MAILRELAY_CONF_VERSION=v1

37
compose.mariadb.yml Normal file
View File

@ -0,0 +1,37 @@
version: "3.8"
services:
app:
environment:
- DB_HOST=${STACK_NAME}_db
- DB_USER=site
- DB_PASSWORD_FILE=/run/secrets/db_password
- DB_NAME=site
secrets:
- db_password
depends_on:
- db
db:
image: "mariadb:10.6"
volumes:
- "mariadb:/var/lib/mysql"
networks:
- internal
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password
- MYSQL_DATABASE=site
- MYSQL_USER=site
- MYSQL_PASSWORD_FILE=/run/secrets/db_password
secrets:
- db_password
- db_root_password
deploy:
labels: ['coop-cloud.${STACK_NAME}.db.version=10.6-718cb856']
volumes:
mariadb:
secrets:
db_root_password:
external: true
name: ${STACK_NAME}_db_root_password_${SECRET_DB_ROOT_PASSWORD_VERSION}
db_password:
external: true
name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION}

View File

@ -1,19 +1,14 @@
version: "3.8"
services:
app:
image: php:8.0-fpm-alpine3.13
image: php:${PHP_VERSION}-fpm-alpine3.13
volumes:
- "site_content:/var/www/html/"
networks:
- internal
environment:
- DB_HOST=db
- DB_USER=site
- DB_PASSWORD_FILE=/run/secrets/db_password
- DB_NAME=site
- PHP_EXTENSIONS_TO_DISABLE
secrets:
- db_password
- PHP_EXTENSIONS
- APP_ENV
configs:
- source: php_uploads_conf
target: /usr/local/etc/php/conf.d/uploads.ini
@ -21,14 +16,12 @@ services:
# target: /docker-entrypoint.sh
# mode: 0555
# entrypoint: /docker-entrypoint.sh
depends_on:
- db
deploy:
update_config:
failure_action: rollback
order: start-first
labels:
- coop-cloud.${STACK_NAME}.app.version=8.0-92fac7ac
- coop-cloud.${STACK_NAME}.app.version=${PHP_VERSION}-92fac7ac
frontend:
image: nginx:1.19.2
networks:
@ -57,43 +50,20 @@ services:
target: /etc/nginx/conf.d/default.conf
environment:
- STACK_NAME
- ROOT_PATH
# healthcheck:
# test: ["CMD", "curl", "-f", "http://localhost"]
# interval: 30s
# timeout: 10s
# retries: 10
# start_period: 1m
db:
image: "mariadb:10.6"
volumes:
- "mariadb:/var/lib/mysql"
networks:
- internal
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password
- MYSQL_DATABASE=site
- MYSQL_USER=site
- MYSQL_PASSWORD_FILE=/run/secrets/db_password
secrets:
- db_password
- db_root_password
deploy:
labels: ['coop-cloud.${STACK_NAME}.db.version=10.6-718cb856']
networks:
internal:
internal: true
proxy:
external: true
volumes:
mariadb:
site_content:
secrets:
db_root_password:
external: true
name: ${STACK_NAME}_db_root_password_${SECRET_DB_ROOT_PASSWORD_VERSION}
db_password:
external: true
name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION}
configs:
entrypoint_conf:
name: ${STACK_NAME}_entrypoint_conf_${ENTRYPOINT_CONF_VERSION}

View File

@ -4,7 +4,7 @@ server {
listen [::]:80;
server_name localhost;
root /var/www/html;
root {{ env "ROOT_PATH" }};
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;