diff --git a/config-example b/config-example index f23200e..1fe8e25 100644 --- a/config-example +++ b/config-example @@ -25,7 +25,7 @@ export _wp_plugins_active="elementor wp-mail-smtp gdpr-cookie-compliance regener export _docker_user="ray" -export _remote_host="wp-stack-four" +export _remote_host="wp-stack-five" export _domain="wptest.isnet.uk" export _docker_base_dir="/var/docker" export _mysql_root_passwd="db" diff --git a/production/export-to-production.sh b/production/export-to-production.sh index 3a06301..25963b5 100755 --- a/production/export-to-production.sh +++ b/production/export-to-production.sh @@ -14,6 +14,7 @@ echo "MYSQL_DATABASE=wordpress" >> .env $_ssh_cmd "mkdir -p $_docker_dir/wordpress" +echo "Copying files ..." scp -r production/config "$_scp_to_base"/config scp production/Dockerfile "$_scp_to_base"/Dockerfile scp production/entrypoint.sh "$_scp_to_base"/entrypoint.sh @@ -23,15 +24,19 @@ scp production/docker-compose.yml "$_scp_to_base"/docker-compose.yml scp wordpress.tar.gz "$_scp_to_base"/wordpress.tar.gz $_ssh_cmd "tar -xf $_docker_dir/wordpress.tar.gz -C $_docker_dir/wordpress && rm $_docker_dir/wordpress.tar.gz" +echo "Configuring files ..." $_ssh_cmd "sed -i 's/__HOST__/$_remote_host/g' $_docker_dir/config/nginx.conf" -# TODO make this more robust than just changing any old localhost +# TODO make this more robust than just substituting localhost $_ssh_cmd "sed -i 's/localhost/$_remote_host-mysql/g' $_docker_dir/wordpress/wp-config.php" $_ssh_cmd "chown -R $_docker_user: $_docker_dir" +# The 82 comes from the Dockerfile addgroup and adduser commands +$_ssh_cmd "chown -R 82:82 $_docker_dir/wordpress" +echo "Starting containers ..." $_ssh_cmd "cd $_docker_dir && docker-compose up -d --build" # TODO - need to wait for mysql to initialise -# temporary +# temporary solution echo "waiting for mysql to initialise ..." sleep 10 echo "still waiting for mysql to initialise ..." @@ -39,23 +44,31 @@ sleep 10 echo "waiting a little bit longer for mysql to initialise ..." sleep 5 -# TODO does docker always assign ips in range 172.% ???? -_ssh_shell_cmd='echo "GRANT ALL PRIVILEGES ON wordpress."*" TO \"wordpress\"@\"172.%\" IDENTIFIED BY \"wordpress\";" | mysql -uroot -pdb' -# _ssh_shell_cmd='echo "'"$_mysql_cmd"'" | mysql -uroot -pdb' -echo "$_ssh_shell_cmd" -_cmd_docker_exec="cd $_docker_dir && docker exec -t $_remote_host-mysql /bin/sh -c '$_ssh_shell_cmd'" +echo "Configuring WordPress ..." -echo "$_ssh_cmd -- $_cmd_docker_exec" +# TODO does docker always assign ips in range 172.% ???? +# TODO - sort this mess out - use functions or something +_ssh_shell_cmd='echo "GRANT ALL PRIVILEGES ON wordpress."*" TO \"wordpress\"@\"172.%\" IDENTIFIED BY \"wordpress\";" | mysql -uroot -pdb' +_cmd_docker_exec="cd $_docker_dir && docker exec -t $_remote_host-mysql /bin/sh -c '$_ssh_shell_cmd'" +echo "$_ssh_cmd $_cmd_docker_exec" $_ssh_cmd $_cmd_docker_exec +_cmd_wp="wp db import --dbuser=wordpress --dbpass=$_wp_db_passwd data.sql" +_cmd_docker_exec="cd $_docker_dir && docker exec -t $_remote_host-wordpress /bin/sh -c '$_cmd_wp'" +echo "$_ssh_cmd $_cmd_docker_exec" +$_ssh_cmd "$_cmd_docker_exec" -_cmd_wp_import="wp db import --dbuser=wordpress --dbpass=$_wp_db_passwd data.sql" -_cmd_docker_exec="cd $_docker_dir && docker exec -t $_remote_host-wordpress /bin/sh -c '$_cmd_wp_import'" -$_ssh_cmd "echo '$_wp_db_passwd' && $_cmd_docker_exec" +# TODO correct URLS +# TODO move this into helper script +# wp search-replace 'example.dev' 'example.com' --skip-columns=guid +# Or, if you only want to change the option, you can do: +# wp option update home 'http://example.com' +# wp option update siteurl 'http://example.com'; +_cmd_wp="wp search-replace '$_local_hostname.$_local_domain' '$_remote_host.$_domain' --skip-columns=guid" +_cmd_docker_exec="cd $_docker_dir && docker exec -t $_remote_host-wordpress /bin/sh -c '$_cmd_wp'" +echo "$_ssh_cmd $_cmd_docker_exec" +$_ssh_cmd "$_cmd_docker_exec" -# set correct URLS - -# ensure HTTP_X_FORWARDED_PROTO header is set in wp-config.php - -# rm .env +# TODO ensure HTTP_X_FORWARDED_PROTO header is set in wp-config.php +# TODO 3m .env