Added in mysql conf files; trying to get correct php extensions for magento to run

This commit is contained in:
William Brawner 2016-05-06 17:23:04 -05:00
parent 7b556a55dd
commit 9c69c4ee1a
7 changed files with 263 additions and 9 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
public_html/*

View file

@ -17,20 +17,23 @@ php:
- app
app:
image: php:7.0-fpm
image: php:5.6-fpm
volumes:
- ./public_html:/var/www/html
command: "true"
mysql:
image: mysql:latest
build: ./mysql/
volumes_from:
- data
- app
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: project
MYSQL_USER: project
MYSQL_PASSWORD: project
MYSQL_ROOT_PASSWORD: 123123
MYSQL_DATABASE: magento
MYSQL_USER: magento
MYSQL_PASSWORD: magento
data:
image: mysql:latest

5
mysql/Dockerfile Normal file
View file

@ -0,0 +1,5 @@
FROM mysql:latest
RUN apt-get update -y && apt-get install -y vim
COPY ./my.cnf /etc/mysql/my.cnf
COPY ./mage-dbdump.sh /opt/mage-dbdump.sh
RUN chmod 644 /etc/mysql/my.cnf

197
mysql/mage-dbdump.sh Normal file
View file

@ -0,0 +1,197 @@
#!/bin/bash
IGNORE_TABLES=( dataflow_batch_export dataflow_batch_import log_customer log_quote log_summary log_summary_type log_url log_url_info log_visitor log_visitor_info log_visitor_online report_event index_event enterprise_logging_event_changes core_cache core_cache_tag core_session core_cache_tag )
IGNORE_TABLES_AGGRESSIVE=( report_compared_product_index report_viewed_product_index sales_flat_quote_address sales_flat_quote_shipping_rate enterprise_customer_sales_flat_quote enterprise_customer_sales_flat_quote_address sales_flat_quote )
TRUNCATE_TABLES=( dataflow_batch_export dataflow_batch_import log_customer log_quote log_summary log_summary_type log_url log_url_info log_visitor log_visitor_info log_visitor_online report_viewed_product_index report_compared_product_index report_event index_event index_process_event )
CONFIG_FILE="./app/etc/local.xml"
DUMP_FILE="./var/db.sql"
function usage()
{
cat <<EOF
Usage: $0 [OPTIONS]
Version: 1.03
Author: www.sonassi.com
Download: sys.sonassi.com/mage-dbdump.sh
This script is used to dump or restore Magento databases by reading
the local.xml file and parsing the DB credentials. It strips out
superfluous data (logs etc.) for smaller and quicker dumps. It also
optimises the dump by avoiding locks where possible.
Dumps to $DUMP_FILE(.gz)
If you have pigz installed, it will use that over gzip for parallel
compression/de-compression.
OPTIONS:
-a Advertise awesome hosting
-d Dump the database
-r Restore the databse
-z Use gzip compression (use with -d or -r)
-e Use extended inserts
-h Show help/usage
-f Full dump, do not exclude any tables
-A Aggressive dump, exclude (${IGNORE_TABLES_AGGRESSIVE[@]})
-B Exclude additional custom tables (space separated, within "double quotes")
-F Do not ask questions and force all actions
-i Interactive, enter a mysql> prompt
-c Clean log and index tables
EOF
}
function error()
{
echo -e "Error: $1"
[[ ! "$2" == "noexit" ]] && exit 1
}
function getParam()
{
RETVAL=$(grep -Eoh "<$1>(<!\[CDATA\[)?(.*)(\]\]>)?<\/$1>" $TMP_FILE | sed "s#<$1><!\[CDATA\[##g;s#\]\]><\/$1>##g")
if [[ "$2" == "sanitise" ]]; then
RETVAL=$(echo "$RETVAL" | sed 's/"/\\\"/g')
fi
echo -e "$RETVAL"
}
function compress()
{
while read DATA; do
[[ ! "$OPT_z" == "" ]] && (echo "$DATA" | $GZIP_CMD -) || echo "$DATA"
done
}
function mysqldumpit()
{
if [[ "$OPT_f" == "" ]]; then
[[ ! "$OPT_A" == "" ]] && IGNORE_TABLES=( ${IGNORE_TABLES[@]} ${IGNORE_TABLES_AGGRESSIVE[@]} )
[[ ! "$OPT_B" == "" ]] && IGNORE_TABLES=( ${IGNORE_TABLES[@]} $OPT_B )
for TABLE in "${IGNORE_TABLES[@]}"; do
IGNORE_STRING="$IGNORE_STRING --ignore-table=$DBNAME.$TABLE_PREFIX$TABLE"
done
fi
# We use --single-transaction in favour of --lock-tables=false , its slower, but less potential for unreliable dumps
echo "SET SESSION sql_mode='NO_AUTO_VALUE_ON_ZERO';"
( mysqldump -p"$DBPASS" $MYSQL_ARGS --no-data --routines --triggers --single-transaction; \
mysqldump -p"$DBPASS" $MYSQL_ARGS $IGNORE_STRING --no-create-db --single-transaction ) | sed 's/DEFINER=[^*]*\*/\*/g'
}
function question()
{
[[ ! "$OPT_F" == "" ]] && return 0
echo -n "$1 [y/N]: "
read CONFIRM
[[ "$CONFIRM" == "y" ]] || [[ "$CONFIRM" == "Y" ]] && return 0
return 1
}
function message()
{
STRIP=$(for i in {1..38}; do echo -n "#"; done)
echo -e "$STRIP\n$1\n$STRIP"
}
function banner()
{
cat <<EOT
######################################
(_)
___ ___ _ __ __ _ ___ ___ _
/ __|/ _ \| '_ \ / _' / __/ __| |
\__ \ (_) | | | | (_| \__ \__ \ |
|___/\___/|_| |_|\__'_|___/___/_|
For truly optimised Magento hosting
Use http://www.sonassi.com ...
#####################################
EOT
}
[ ! -f "$CONFIG_FILE" ] && error "$CONFIG_FILE does not exist"
while getopts "B:AdrzehfFaic" OPTION; do
case $OPTION in
a)
banner
exit 0
;;
h)
usage
exit 0
;;
:)
error "Error: -$OPTION requires an argument" noexit
exit 1
;;
\?)
error "Error: Unknown option -$OPTION" noexit
exit 1
;;
B)
IGNORE_TABLES+=( $OPTARG )
;;
*)
[[ "$OPTARG" == "" ]] && OPTARG='"-'$OPTION' 1"'
OPTION="OPT_$OPTION"
eval ${OPTION}=$OPTARG
;;
esac
done
[[ "$OPT_c$OPT_i$OPT_d$OPT_r" == "" ]] && usage && exit 1
which mktemp >/dev/null 2>&1
[ $? -eq 0 ] && TMP_FILE=$(mktemp ./var/local.xml.XXXXX) || TMP_FILE="./var/.tmp.local.xml"
sed -ne '/default_setup/,/\/default_setup/p' $CONFIG_FILE > $TMP_FILE
which pigz >/dev/null 2>&1
[ $? -eq 0 ] && GZIP_CMD="pigz" || GZIP_CMD="gzip"
IGNORE_STRING=""
DBHOST=$(getParam "host")
DBUSER=$(getParam "username")
DBPASS=$(getParam "password" "sanitise" )
DBNAME=$(getParam "dbname")
TABLE_PREFIX=$(getParam "table_prefix")
[ -f $TMP_FILE ] && rm $TMP_FILE
[[ ! "$OPT_z" == "" ]] && DUMP_FILE="$DUMP_FILE"".gz"
MYSQL_ARGS="-f -h $DBHOST -u $DBUSER $DBNAME"
[[ ! "$OPT_e" == "" ]] && MYSQL_ARGS="$MYSQL_ARGS --extended-insert=FALSE --complete-insert=TRUE"
if [[ ! "$OPT_r" == "" ]]; then
[ ! -f "$DUMP_FILE" ] && error "SQL file does not exist"
question "Are you sure you want to restore $DUMP_FILE to $DBNAME?"
if [ $? -eq 0 ]; then
[[ ! "$OPT_z" == "" ]] && $GZIP_CMD -d <$DUMP_FILE | mysql $MYSQL_ARGS -p"$DBPASS" || mysql $MYSQL_ARGS -p"$DBPASS" <$DUMP_FILE
message "MYSQL IMPORT COMPLETE"
banner
fi
exit 0
elif [[ ! "$OPT_c" == "" ]]; then
for TABLE in ${TRUNCATE_TABLES[@]}; do
echo "Cleaning $TABLE ..."
mysql $MYSQL_ARGS -p"$DBPASS" -e "TRUNCATE ${TABLE_PREFIX}$TABLE"
done
elif [[ ! "$OPT_i" == "" ]]; then
mysql $MYSQL_ARGS -p"$DBPASS"
elif [[ ! "$OPT_d" == "" ]]; then
[[ ! "$OPT_z" == "" ]] && mysqldumpit | $GZIP_CMD > $DUMP_FILE || mysqldumpit > $DUMP_FILE
message "MYSQL DUMP COMPLETE"
exit 0
fi

28
mysql/my.cnf Normal file
View file

@ -0,0 +1,28 @@
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
skip-host-cache
skip-name-resolve
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp
max_allowed_packet = 1024M
log-error = /var/log/mysql/error.log
symbolic-links=0
!includedir /etc/mysql/conf.d/

View file

@ -1,7 +1,7 @@
server {
listen 80 default_server;
root /var/www/html;
index index.html index.php;
index index.php;
charset utf-8;

View file

@ -1,3 +1,23 @@
FROM php:7.0-fpm
FROM php:5.6-fpm
RUN docker-php-ext-install pdo_mysql
# Install required php extensions
RUN apt-get update -y && apt-get install -y php5-mysql php5-gd php5-curl php5-mcrypt
# Install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
php -r "if (hash_file('SHA384', 'composer-setup.php') === '92102166af5abdb03f49ce52a40591073a7b859a86e8ff13338cf7db58a19f7844fbc0bb79b2773bf30791e935dbd938') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" && \
php composer-setup.php --install-dir=/usr/bin --filename=composer && \
php -r "unlink('composer-setup.php');"
# Install magerun
RUN apt-get install -y wget && \
wget https://files.magerun.net/n98-magerun.phar && \
apt-get purge -y wget && \
mv n98-magerun.phar /usr/bin/ && \
echo 'alias magerun="php -f /usr/bin/n98-magerun.phar --"' >> /root/.bashrc
# Install Accolade Magerun Tools
RUN apt-get install -y git && \
mkdir -p /usr/local/share/n98-magerun/modules && \
cd /usr/local/share/n98-magerun/modules && \
git clone https://github.com/Accolades/MagerunTools.git