Added in mysql conf files; trying to get correct php extensions for magento to run
This commit is contained in:
parent
7b556a55dd
commit
9c69c4ee1a
7 changed files with 263 additions and 9 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
public_html/*
|
|
@ -17,20 +17,23 @@ php:
|
||||||
- app
|
- app
|
||||||
|
|
||||||
app:
|
app:
|
||||||
image: php:7.0-fpm
|
image: php:5.6-fpm
|
||||||
volumes:
|
volumes:
|
||||||
- ./public_html:/var/www/html
|
- ./public_html:/var/www/html
|
||||||
command: "true"
|
command: "true"
|
||||||
|
|
||||||
mysql:
|
mysql:
|
||||||
image: mysql:latest
|
build: ./mysql/
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- data
|
||||||
|
- app
|
||||||
|
ports:
|
||||||
|
- 3306:3306
|
||||||
environment:
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: password
|
MYSQL_ROOT_PASSWORD: 123123
|
||||||
MYSQL_DATABASE: project
|
MYSQL_DATABASE: magento
|
||||||
MYSQL_USER: project
|
MYSQL_USER: magento
|
||||||
MYSQL_PASSWORD: project
|
MYSQL_PASSWORD: magento
|
||||||
|
|
||||||
data:
|
data:
|
||||||
image: mysql:latest
|
image: mysql:latest
|
||||||
|
|
5
mysql/Dockerfile
Normal file
5
mysql/Dockerfile
Normal 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
197
mysql/mage-dbdump.sh
Normal 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
28
mysql/my.cnf
Normal 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/
|
|
@ -1,7 +1,7 @@
|
||||||
server {
|
server {
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
root /var/www/html;
|
root /var/www/html;
|
||||||
index index.html index.php;
|
index index.php;
|
||||||
|
|
||||||
charset utf-8;
|
charset utf-8;
|
||||||
|
|
||||||
|
|
|
@ -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
|
Loading…
Reference in a new issue