mirror of
https://github.com/claudehohl/Stikked.git
synced 2025-04-25 20:41:20 -05:00
Merge pull request #483 from xrobau/feature/rewrite-docker
Rewrite docker setup
This commit is contained in:
commit
20077ab2a0
1
.dockerignore
Normal file
1
.dockerignore
Normal file
@ -0,0 +1 @@
|
|||||||
|
.git*
|
29
Dockerfile
29
Dockerfile
@ -1,10 +1,23 @@
|
|||||||
FROM php:7.0-apache
|
FROM php:7.1-apache
|
||||||
COPY htdocs /var/www/html
|
|
||||||
COPY htdocs/application/config/stikked.php.dist /var/www/html/application/config/stikked.php
|
|
||||||
COPY docker/replace-envvars.sh /bin/
|
|
||||||
COPY docker/docker-php-entrypoint /usr/local/bin/
|
|
||||||
RUN chmod +x /usr/local/bin/docker-php-entrypoint
|
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
RUN a2enmod rewrite
|
|
||||||
RUN docker-php-ext-install mysqli
|
# Note that 'vim' and 'mysql-client' are changed to an echo,
|
||||||
|
# as they're only useful when debugging, and leaving them in
|
||||||
|
# the standard container only increases its size.
|
||||||
|
RUN apt-get -y update && \
|
||||||
|
apt-get -y install libpng-dev zlib1g-dev cron && \
|
||||||
|
echo apt-get -y install vim mysql-client && \
|
||||||
|
a2enmod rewrite && \
|
||||||
|
docker-php-ext-install mysqli gd && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY htdocs /var/www/html
|
||||||
|
COPY htdocs/application/config/stikked.php.dist /var/www/html/application/config/stikked.php
|
||||||
|
|
||||||
|
# This overwrites the entrypoint from the php container with ours, which updates the
|
||||||
|
# stikked config file based on environment variables
|
||||||
|
COPY docker/docker-php-entrypoint /usr/local/bin/
|
||||||
|
|
||||||
|
RUN chmod +x /usr/local/bin/docker-php-entrypoint
|
||||||
|
|
||||||
|
@ -1,24 +1,29 @@
|
|||||||
version: '3'
|
version: "3.2"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
db:
|
db:
|
||||||
image: mysql:latest
|
image: mysql:latest
|
||||||
volumes:
|
volumes:
|
||||||
- db_data:/var/lib/mysql
|
- db_data:/var/lib/mysql
|
||||||
environment:
|
env_file: docker/stikked-envvars.txt
|
||||||
MYSQL_RANDOM_ROOT_PASSWORD: 1
|
|
||||||
MYSQL_DATABASE: stikked
|
|
||||||
MYSQL_USER: stikked
|
|
||||||
MYSQL_PASSWORD: stikked
|
|
||||||
|
|
||||||
stikked:
|
stikked:
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
image: stikked
|
image: stikked
|
||||||
env_file:
|
env_file: docker/stikked-envvars.txt
|
||||||
docker/stikked-envvars.txt
|
|
||||||
ports:
|
ports:
|
||||||
- 80:80
|
- 80:80
|
||||||
|
|
||||||
|
# You should use persistant storage for this,
|
||||||
|
# as if the volume is deleted, everything is gone!
|
||||||
volumes:
|
volumes:
|
||||||
db_data:
|
db_data:
|
||||||
|
|
||||||
|
# Example of NFS backed persistant storage:
|
||||||
|
# db_data:
|
||||||
|
# driver_opts:
|
||||||
|
# type: "nfs"
|
||||||
|
# o: "addr=192.168.1.254,nolock,soft,rw"
|
||||||
|
# device: ":/nfs/export/pbdatabase"
|
||||||
|
|
||||||
|
@ -1,12 +1,70 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This is copied from the original docker-php-entrypoint and was updated
|
||||||
|
# by the Stikked container
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# custom script to overwrite stikked config variables
|
# Check to see where Stikked might be - If you added Stikked to this
|
||||||
bash /bin/replace-envvars.sh
|
# container with something like:
|
||||||
|
# ADD https://github.com/claudehohl/Stikked/archive/0.12.0.tar.gz /usr/local
|
||||||
|
# then it will be in /usr/local/stikked/Stikked-0.12.0/htdocs/application/config/stikked.php.dist
|
||||||
|
|
||||||
|
# If you're using the standard Dockerfile from Stikked, it will be in
|
||||||
|
# /var/www/html/htdocs/applcation/config/stikked.php.dist
|
||||||
|
|
||||||
|
if [ -e /var/www/html/application/config/stikked.php.dist ]; then
|
||||||
|
CFG=/var/www/html/application/config/stikked.php
|
||||||
|
cp /var/www/html/application/config/stikked.php.dist $CFG
|
||||||
|
elif [ -e /usr/local/stikked/Stikked-*/htdocs/application/config/stikked.php.dist ]; then
|
||||||
|
CFG=$(echo /usr/local/stikked/Stikked-*/htdocs/application/config/stikked.php.dist | sed 's/\.dist//')
|
||||||
|
cp /usr/local/stikked/Stikked-*/htdocs/application/config/stikked.php.dist $CFG
|
||||||
|
else
|
||||||
|
echo I can not find the stikked.php.dist file, which means docker-php-entrypoint
|
||||||
|
echo needs to be updated. Sorry. I can not continue. Exiting.
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set some default variables
|
||||||
|
STIKKED_SITE_NAME="${STIKKED_SITE_NAME:-Dockerised Stikked Container}"
|
||||||
|
STIKKED_BASE_URL="${STIKKED_BASE_URL:-https://bogus.example.com/}"
|
||||||
|
STIKKED_DB_HOSTNAME="${STIKKED_DB_HOSTNAME:-db}"
|
||||||
|
|
||||||
|
# If these aren't set, use MYSQL_ values. If they're not set, then
|
||||||
|
# just guess.
|
||||||
|
STIKKED_DB_DATABASE="${STIKKED_DB_DATABASE:-${MYSQL_DATABASE:-stikked}}"
|
||||||
|
STIKKED_DB_USERNAME="${STIKKED_DB_USERNAME:-${MYSQL_USER:-stikked}}"
|
||||||
|
STIKKED_DB_PASS="${STIKKED_DB_PASSWORD:-${MYSQL_PASSWORD:-stikked}}"
|
||||||
|
|
||||||
|
# If there's not a cron key, set a random one.
|
||||||
|
if [ ! "$STIKKED_CRON_KEY" ]; then
|
||||||
|
# Note - this is not very random. But it'll do in a pinch.
|
||||||
|
STIKKED_CRON_KEY=$RANDOM.$RANDOM.$RANDOM.$RANDOM
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Put the cron file in place
|
||||||
|
echo "*/5 * * * * root curl --silent http://localhost/cron/$STIKKED_CRON_KEY" > /etc/cron.d/stikked
|
||||||
|
|
||||||
|
# This gets all environment variables that start with STIKKED_
|
||||||
|
svars=$(set | grep \^STIKKED_ | cut -d= -f1)
|
||||||
|
for svar in $svars; do
|
||||||
|
# Remove STIKKED_ from the front, and convert it to lower
|
||||||
|
# case (STIKKED_CRON_KEY is now cron_key)
|
||||||
|
val=$(echo $svar | sed 's/STIKKED_\(.*\)/\L\1/')
|
||||||
|
# if it has a /, escape it - for example, in a path or URL.
|
||||||
|
FIXED=$(echo ${!svar} | sed 's_/_\\/_g')
|
||||||
|
# Tell the user what's going on
|
||||||
|
echo Setting $val to be $FIXED
|
||||||
|
# And actually update the file
|
||||||
|
sed -i "s/\['$val'\].*/['$val'] = '$FIXED';/" $CFG
|
||||||
|
done
|
||||||
|
|
||||||
|
# Start Cron, if it exists
|
||||||
|
[ -e /usr/sbin/cron ] && /usr/sbin/cron
|
||||||
|
|
||||||
# first arg is `-f` or `--some-option`
|
# first arg is `-f` or `--some-option`
|
||||||
if [ "${1#-}" != "$1" ]; then
|
if [ "${1#-}" != "$1" ]; then
|
||||||
set -- php "$@"
|
set -- apache2-foreground "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
sed -i "s/\['site_name'\].*/['site_name'] = '$SITENAME';/" /var/www/html/application/config/stikked.php
|
|
||||||
sed -i "s/\['base_url'\].*/['base_url'] = '$BASEURL';/" /var/www/html/application/config/stikked.php
|
|
||||||
sed -i "s/\['db_hostname'\].*/['db_hostname'] = '$DBHOST';/" /var/www/html/application/config/stikked.php
|
|
||||||
sed -i "s/\['db_database'\].*/['db_database'] = '$DBNAME';/" /var/www/html/application/config/stikked.php
|
|
||||||
sed -i "s/\['db_username'\].*/['db_username'] = '$DBUSER';/" /var/www/html/application/config/stikked.php
|
|
||||||
sed -i "s/\['db_password'\].*/['db_password'] = '$DBPASS';/" /var/www/html/application/config/stikked.php
|
|
||||||
sed -i "s/\['enable_captcha'\].*/['enable_captcha'] = '$CAPTHCA';/" /var/www/html/application/config/stikked.php
|
|
@ -1,7 +1,27 @@
|
|||||||
SITENAME=Stikked
|
MYSQL_ROOT_PASSWORD=thisREALLYshouldBEchanged
|
||||||
BASEURL=http:\/\/stikked.local\/
|
MYSQL_DATABASE=stikked
|
||||||
DBHOST=db
|
MYSQL_USER=stikked
|
||||||
DBNAME=stikked
|
MYSQL_PASSWORD=stikked
|
||||||
DBUSER=stikked
|
|
||||||
DBPASS=stikked
|
STIKKED_SITE_NAME=Stikked
|
||||||
CAPTCHA=false
|
# Note that there is no need to escape the URL
|
||||||
|
STIKKED_BASE_URL=http://stikked.local/
|
||||||
|
|
||||||
|
# This should match the database container name
|
||||||
|
STIKKED_DB_HOSTNAME=db
|
||||||
|
|
||||||
|
# These do NOT need to be set, as they will be inherited from
|
||||||
|
# the MYSQL_DATABASE settings above. However, you can set them
|
||||||
|
# if you are using a seperately managed database.
|
||||||
|
#STIKKED_DB_DATABASE=stikked
|
||||||
|
#STIKKED_DB_USERNAME=stikked
|
||||||
|
#STIKKED_DB_PASS=stikked
|
||||||
|
|
||||||
|
# Other random examples
|
||||||
|
STIKKED_DISALLOW_SEARCH_ENGINES="true"
|
||||||
|
STIKKED_JS_EDITOR="codemirror"
|
||||||
|
|
||||||
|
# Example of enabling CAPTCHA
|
||||||
|
#STIKKED_ENABLE_CAPTCHA="true"
|
||||||
|
#STIKKED_RECAPTCHA_PUBLICKEY="_replace_this_with_your_public_key_"
|
||||||
|
#STIKKED_RECAPTCHA_PRIVATEKEY="_replace_this_with_your_private_key_"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user