initial commit
This commit is contained in:
14
.env.sample
Normal file
14
.env.sample
Normal file
@@ -0,0 +1,14 @@
|
||||
PROJECT_NAME=kenesaw
|
||||
|
||||
WORDPRESS_ADMIN_USER=
|
||||
WORDPRESS_ADMIN_EMAIL=
|
||||
WORDPRESS_ADMIN_PASSWORD=
|
||||
|
||||
WORDPRESS_DB_PASSWORD=
|
||||
WORDPRESS_DB_USER=
|
||||
WORDPRESS_DB_HOST=
|
||||
|
||||
MYSQL_USER=
|
||||
MYSQL_PASSWORD=
|
||||
MYSQL_ROOT_PASSWORD=
|
||||
MYSQL_DATABASE=
|
||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
*.sql
|
||||
*.tgz
|
||||
.env
|
||||
41
README.md
Normal file
41
README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Kenesaw
|
||||
|
||||
Kenesaw is a Docker project to set-up two Wordpress servers, one for a league, one for a team. It uses Caddy for the webserver and a single MariaDB instance for the server.
|
||||
|
||||
Each Wordpress instance setups their own database within the MariaDB instance.
|
||||
|
||||
## Setup
|
||||
### Environment Files
|
||||
There are two environment files, one at the project root and one under each WordPress folder ([cmbabaseball](./cmbabaseball/.env), [chihounds](./chihounds/.env)).
|
||||
|
||||
### Init
|
||||
Each WordPress site has an `wp-install.sh` script ([cmbabaseball](./cmbabaseball/wp-install.sh), [chihounds](./chihounds/wp-install.sh)). It creates the database and install Wordpress using the common `wp-admin` user info provided in the project root via a ephemeral wp-cli container. (Theoretically, this can be changed by overwriting the environment variables in the website-specific env file, but I didn't test that and I don't know what the order would have to be).
|
||||
|
||||
```sh
|
||||
./cmbabaseball/init-wordpress.sh
|
||||
./chihounds/init-wordpress.sh
|
||||
```
|
||||
|
||||
OR
|
||||
|
||||
```sh
|
||||
./*/init-wordpress.sh
|
||||
```
|
||||
|
||||
### Import
|
||||
Since I was starting from a couple of existing sites, each WordPress site has an `import-wordpress.sh` ([cmbabaseball](./cmbabaseball/import-wordpress.sh), [chihounds](./chihounds/import-wordpress.sh)). These have been packaged as a `import.sql` DB export and a `import-uploads.tgz` archive of the uploads folder.
|
||||
|
||||
```sh
|
||||
./cmbabaseball/wp-import.sh
|
||||
./chihounds/wp-import.sh
|
||||
```
|
||||
OR
|
||||
```sh
|
||||
./*cmbabaseball*/wp-import.sh
|
||||
```
|
||||
|
||||
### Tying it together
|
||||
To put it together succintly, you can run the following to do all the init scripts, then the import scripts.
|
||||
```sh
|
||||
/*/wp-install.sh && ./*/wp-import.sh
|
||||
```
|
||||
15
caddy/Caddyfile
Normal file
15
caddy/Caddyfile
Normal file
@@ -0,0 +1,15 @@
|
||||
cmbabaseball.localhost {
|
||||
root * /var/www/cmbabaseball
|
||||
php_fastcgi cmbabaseball:9000 {
|
||||
root /var/www/html
|
||||
}
|
||||
file_server
|
||||
}
|
||||
|
||||
chihounds.localhost {
|
||||
root * /var/www/chihounds
|
||||
php_fastcgi chihounds:9000 {
|
||||
root /var/www/html
|
||||
}
|
||||
file_server
|
||||
}
|
||||
8
chihounds/.env.sample
Normal file
8
chihounds/.env.sample
Normal file
@@ -0,0 +1,8 @@
|
||||
WORDPRESS_TITLE=
|
||||
WORDPRESS_SITEURL=
|
||||
WORDPRESS_HOME=
|
||||
|
||||
WORDPRESS_DB_NAME=
|
||||
|
||||
WP_THEMES=
|
||||
WP_PLUGINS=
|
||||
4
chihounds/docker-run.sh
Executable file
4
chihounds/docker-run.sh
Executable file
@@ -0,0 +1,4 @@
|
||||
cd "$(dirname "$0")"
|
||||
PROJECT_NAME=kenesaw
|
||||
CONTAINER_NAME=chihounds
|
||||
docker run --rm --user 33:33 --volume ${PROJECT_NAME}_${CONTAINER_NAME}-wpdata:/var/www/html --env-file ../.env --env-file .env --network ${PROJECT_NAME}_network "$@"
|
||||
2
chihounds/wp-cli.sh
Executable file
2
chihounds/wp-cli.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
cd "$(dirname "$0")"
|
||||
./docker-run.sh wordpress:cli "$@"
|
||||
27
chihounds/wp-import.sh
Executable file
27
chihounds/wp-import.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
./docker-run.sh \
|
||||
-v ./data/import.sql:/import.sql \
|
||||
-v ./data/import-uploads.tgz:/import-uploads.tgz \
|
||||
wordpress:cli sh -c '
|
||||
|
||||
if [ -f /import.sql ]; then
|
||||
echo "Importing Database..."
|
||||
wp db query < /import.sql
|
||||
echo "Replacing default site url (https://localhost->$WORDPRESS_SITEURL)"
|
||||
wp search-replace "https://localhost" "$WORDPRESS_SITEURL" --format=count
|
||||
echo "Re-adding the admin user"
|
||||
wp user create $WORDPRESS_ADMIN_USER $WORDPRESS_ADMIN_EMAIL --user_pass=$WORDPRESS_ADMIN_PASSWORD --role=administrator --porcelain
|
||||
echo "Done."
|
||||
fi && \
|
||||
if [ -f /import-uploads.tgz ]; then
|
||||
echo "Importing Uploads..."
|
||||
tar -xz --overwrite -f /import-uploads.tgz -C /var/www/html/wp-content/uploads .
|
||||
echo "Done."
|
||||
fi && \
|
||||
if [ -f /import-plugins.tgz ]; then
|
||||
echo "Importing Plugins..."
|
||||
tar -xzk--overwrite -f /import-plugins.tgz -C /var/www/html/wp-content/plugins .
|
||||
echo "Done."
|
||||
fi
|
||||
'
|
||||
7
chihounds/wp-install.sh
Executable file
7
chihounds/wp-install.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
cd "$(dirname "$0")"
|
||||
./wp-cli.sh sh -c '
|
||||
wp db create || true && \
|
||||
wp core install --title="$WORDPRESS_TITLE" --url="$WORDPRESS_SITEURL" --admin_user=$WORDPRESS_ADMIN_USER --admin_email=$WORDPRESS_ADMIN_EMAIL --admin_password=$WORDPRESS_ADMIN_PASSWORD && \
|
||||
wp theme install $WP_THEMES --activate; \
|
||||
wp plugin install $WP_PLUGINS --activate
|
||||
'
|
||||
8
cmbabaseball/.env.sample
Normal file
8
cmbabaseball/.env.sample
Normal file
@@ -0,0 +1,8 @@
|
||||
WORDPRESS_TITLE=
|
||||
WORDPRESS_SITEURL=
|
||||
WORDPRESS_HOME=
|
||||
|
||||
WORDPRESS_DB_NAME=
|
||||
|
||||
WP_THEMES=
|
||||
WP_PLUGINS=
|
||||
4
cmbabaseball/docker-run.sh
Executable file
4
cmbabaseball/docker-run.sh
Executable file
@@ -0,0 +1,4 @@
|
||||
cd "$(dirname "$0")"
|
||||
PROJECT_NAME=kenesaw
|
||||
CONTAINER_NAME=cmbabaseball
|
||||
docker run --rm --user 33:33 --volume ${PROJECT_NAME}_${CONTAINER_NAME}-wpdata:/var/www/html --env-file ../.env --env-file .env --network ${PROJECT_NAME}_network "$@"
|
||||
2
cmbabaseball/wp-cli.sh
Executable file
2
cmbabaseball/wp-cli.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
cd "$(dirname "$0")"
|
||||
./docker-run.sh wordpress:cli "$@"
|
||||
27
cmbabaseball/wp-import.sh
Executable file
27
cmbabaseball/wp-import.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
./docker-run.sh \
|
||||
-v ./data/import.sql:/import.sql \
|
||||
-v ./data/import-uploads.tgz:/import-uploads.tgz \
|
||||
wordpress:cli sh -c '
|
||||
|
||||
if [ -f /import.sql ]; then
|
||||
echo "Importing Database..."
|
||||
wp db query < /import.sql
|
||||
echo "Replacing default site url (https://localhost->$WORDPRESS_SITEURL)"
|
||||
wp search-replace "https://localhost" "$WORDPRESS_SITEURL" --format=count
|
||||
echo "Re-adding the admin user"
|
||||
wp user create $WORDPRESS_ADMIN_USER $WORDPRESS_ADMIN_EMAIL --user_pass=$WORDPRESS_ADMIN_PASSWORD --role=administrator --porcelain
|
||||
echo "Done."
|
||||
fi && \
|
||||
if [ -f /import-uploads.tgz ]; then
|
||||
echo "Importing Uploads..."
|
||||
tar -xz --overwrite -f /import-uploads.tgz -C /var/www/html/wp-content/uploads .
|
||||
echo "Done."
|
||||
fi && \
|
||||
if [ -f /import-plugins.tgz ]; then
|
||||
echo "Importing Plugins..."
|
||||
tar -xzk--overwrite -f /import-plugins.tgz -C /var/www/html/wp-content/plugins .
|
||||
echo "Done."
|
||||
fi
|
||||
'
|
||||
7
cmbabaseball/wp-install.sh
Executable file
7
cmbabaseball/wp-install.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
cd "$(dirname "$0")"
|
||||
./wp-cli.sh sh -c '
|
||||
wp db create || true && \
|
||||
wp core install --title="$WORDPRESS_TITLE" --url="$WORDPRESS_SITEURL" --admin_user=$WORDPRESS_ADMIN_USER --admin_email=$WORDPRESS_ADMIN_EMAIL --admin_password=$WORDPRESS_ADMIN_PASSWORD && \
|
||||
wp theme install $WP_THEMES --activate; \
|
||||
wp plugin install $WP_PLUGINS --activate
|
||||
'
|
||||
77
compose.yml
Normal file
77
compose.yml
Normal file
@@ -0,0 +1,77 @@
|
||||
name: ${PROJECT_NAME}
|
||||
services:
|
||||
wordpress-chihounds:
|
||||
container_name: chihounds
|
||||
depends_on:
|
||||
- database
|
||||
image: wordpress:fpm
|
||||
env_file:
|
||||
- .env
|
||||
- chihounds/.env
|
||||
environment:
|
||||
WORDPRESS_DEBUG: 0
|
||||
volumes:
|
||||
- chihounds-wpdata:/var/www/html
|
||||
- ./shared/php.ini:/usr/local/etc/php/conf.d/wordpress.ini
|
||||
networks:
|
||||
- network
|
||||
wordpress-cmbabaseball:
|
||||
container_name: cmbabaseball
|
||||
depends_on:
|
||||
- database
|
||||
image: wordpress:fpm
|
||||
env_file:
|
||||
- .env
|
||||
- cmbabaseball/.env
|
||||
environment:
|
||||
WORDPRESS_DEBUG: 0
|
||||
volumes:
|
||||
- cmbabaseball-wpdata:/var/www/html
|
||||
- ./shared/php.ini:/usr/local/etc/php/conf.d/wordpress.ini
|
||||
networks:
|
||||
- network
|
||||
database:
|
||||
container_name: database
|
||||
hostname: ${WORDPRESS_DB_HOST}
|
||||
image: mariadb
|
||||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
- db-data:/var/lib/mysql
|
||||
networks:
|
||||
- network
|
||||
phpmyadmin:
|
||||
container_name: phpmyadmin
|
||||
image: phpmyadmin
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
UPLOAD_LIMIT: 128M
|
||||
ports:
|
||||
- "8080:80"
|
||||
networks:
|
||||
- network
|
||||
profiles:
|
||||
- DEV
|
||||
caddy:
|
||||
image: caddy:alpine
|
||||
container_name: webserver
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
volumes:
|
||||
- caddy-data:/data
|
||||
- caddy-config:/config
|
||||
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
|
||||
- chihounds-wpdata:/var/www/chihounds
|
||||
- cmbabaseball-wpdata:/var/www/cmbabaseball
|
||||
networks:
|
||||
- network
|
||||
|
||||
volumes:
|
||||
db-data:
|
||||
chihounds-wpdata:
|
||||
cmbabaseball-wpdata:
|
||||
caddy-data:
|
||||
caddy-config:
|
||||
networks:
|
||||
network:
|
||||
8
shared/php.ini
Normal file
8
shared/php.ini
Normal file
@@ -0,0 +1,8 @@
|
||||
file_uploads = On
|
||||
memory_limit = 256M
|
||||
upload_max_filesize = 64M
|
||||
post_max_size = 64M
|
||||
max_execution_time = 300
|
||||
max_input_time = 1000
|
||||
max_input_vars = 10000
|
||||
max_multipart_body_parts = 10000
|
||||
Reference in New Issue
Block a user