250 lines
6.8 KiB
Bash
Executable File
250 lines
6.8 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# zestawianie całej magii
|
|
#
|
|
|
|
# konfiguracja
|
|
static_data_dir="/opt/hangar18"
|
|
mode=""
|
|
|
|
# jeśli mamy 2 argumenty, pierwszy to switch, drugi to katalog
|
|
# jeśli tylko jeden -- albo jedno, albo drugie, trzeba rozpoznać po '--' na początku
|
|
if [[ "$1" != "" ]]; then
|
|
|
|
# mamy drugi argument?
|
|
if [[ "$2" != "" ]]; then
|
|
# przypisujemy
|
|
static_data_dir="$2"
|
|
mode="$1"
|
|
# reality checks
|
|
if [[ "${static_data_dir:0:2}" == "--" ]]; then
|
|
echo "to nie wygląda na katalog: $static_data_dir"
|
|
exit 1
|
|
fi
|
|
if [[ "${mode:0:2}" != "--" ]]; then
|
|
echo "to nie wygląda na tryb pracy: $mode"
|
|
exit 1
|
|
fi
|
|
|
|
# z czym mamy do czynienia?
|
|
elif [[ "${1:0:2}" == "--" ]]; then
|
|
# znaczy, tryb!
|
|
mode="$1"
|
|
else
|
|
# znaczy, katalog!
|
|
static_data_dir="$1"
|
|
fi
|
|
|
|
fi
|
|
|
|
# prefix obrazów, kontenerów, ...
|
|
prefix="plug"
|
|
|
|
#
|
|
# budujemy
|
|
#
|
|
|
|
# czy budujemy?
|
|
if [[ "$mode" == "" || "$mode" == "--build" ]]; then
|
|
|
|
# katalog obecny
|
|
startdir=`pwd`
|
|
|
|
# budujemy nowy dom...
|
|
cd images/
|
|
for img in postgres php-fpm nginx pgadmin cron; do
|
|
# informujemy
|
|
echo -ne "\n\n - buduję: $prefix/$img\n"
|
|
# budujemy
|
|
docker build -t "$prefix/$img" $img || exit 1
|
|
done
|
|
|
|
# wracamy
|
|
cd "$startdir"
|
|
|
|
fi
|
|
|
|
|
|
#
|
|
# katalog konfiguracji, danych, i tak dalej
|
|
#
|
|
|
|
if [[ "$mode" == "" || "$mode" == "--populate-static-data" ]]; then
|
|
|
|
# potrzebujemy sudo
|
|
echo "By jechać dalej, potrzebujemy sudo. To ja poproszę..."
|
|
sudo echo -ne " ...mamy sudo, jedziemy dalej.\n\n\n" || exit 2
|
|
|
|
# tworzymy
|
|
sudo mkdir -p "$static_data_dir"
|
|
# run
|
|
sudo mkdir "$static_data_dir/run"
|
|
sudo mkdir "$static_data_dir/run/php-fpm"
|
|
sudo mkdir "$static_data_dir/run/openldap"
|
|
# logi
|
|
sudo mkdir "$static_data_dir/logs/"
|
|
sudo mkdir "$static_data_dir/logs/postgres"
|
|
sudo mkdir "$static_data_dir/logs/php-fpm"
|
|
sudo mkdir "$static_data_dir/logs/openldap"
|
|
sudo mkdir "$static_data_dir/logs/nginx-public"
|
|
sudo mkdir "$static_data_dir/logs/nginx-internal"
|
|
# dane
|
|
sudo mkdir "$static_data_dir/data"
|
|
sudo mkdir "$static_data_dir/data/postgres"
|
|
sudo mkdir "$static_data_dir/data/php-fpm"
|
|
sudo mkdir "$static_data_dir/data/php-fpm/frontend"
|
|
sudo mkdir "$static_data_dir/data/php-fpm/rest"
|
|
sudo mkdir "$static_data_dir/data/php-fpm/ldapadmin"
|
|
sudo mkdir "$static_data_dir/data/cron"
|
|
sudo mkdir "$static_data_dir/data/cron/d"
|
|
sudo mkdir "$static_data_dir/data/cron/daily"
|
|
sudo mkdir "$static_data_dir/data/cron/weekly"
|
|
sudo mkdir "$static_data_dir/data/cron/hourly"
|
|
sudo mkdir "$static_data_dir/data/cron/monthly"
|
|
sudo rsync -av static_data/data/ "$static_data_dir/data/"
|
|
|
|
# configs if needed
|
|
if [ ! -e "$static_data_dir/configs" ]; then
|
|
sudo cp -a static_data/configs "$static_data_dir/configs"
|
|
fi
|
|
|
|
# uprawnienia
|
|
sudo chown -R root:root "$static_data_dir"
|
|
|
|
fi
|
|
|
|
|
|
#
|
|
# obrazy
|
|
#
|
|
|
|
img_postgres="$prefix/postgres"
|
|
img_nginx="$prefix/nginx"
|
|
img_phpfpm="$prefix/php-fpm"
|
|
img_pgadmin="$prefix/pgadmin"
|
|
img_cron="$prefix/cron"
|
|
|
|
#
|
|
# kontenery
|
|
#
|
|
|
|
# postgres
|
|
cnt_postgres="$prefix-postgres"
|
|
# nginx
|
|
cnt_nginx_public="$prefix-nginx.public"
|
|
cnt_nginx_internal="$prefix-nginx.internal"
|
|
# php-fpm
|
|
cnt_phpfpm_frontend="$prefix-php-fpm.frontend"
|
|
cnt_phpfpm_rest="$prefix-php-fpm.rest"
|
|
cnt_pgadmin="$prefix-pgadmin"
|
|
#cnt_phpfpm_ldapadmin="$prefix-ldapadmin"
|
|
# cron
|
|
cnt_cron="$prefix-cron"
|
|
|
|
|
|
#
|
|
# czyścimy
|
|
#
|
|
|
|
if [[ "$mode" == "" || "$mode" == "--kill" ]]; then
|
|
|
|
docker stop $cnt_postgres $cnt_nginx_public $cnt_nginx_internal $cnt_phpfpm_frontend $cnt_phpfpm_rest $cnt_pgadmin $cnt_phpfpm_ldapadmin $cnt_cron
|
|
docker kill $cnt_postgres $cnt_nginx_public $cnt_nginx_internal $cnt_phpfpm_frontend $cnt_phpfpm_rest $cnt_pgadmin $cnt_phpfpm_ldapadmin $cnt_cron
|
|
docker rm -v $cnt_postgres $cnt_nginx_public $cnt_nginx_internal $cnt_phpfpm_frontend $cnt_phpfpm_rest $cnt_pgadmin $cnt_phpfpm_ldapadmin $cnt_cron
|
|
|
|
fi
|
|
|
|
#
|
|
# odpalamy kolejno dockery
|
|
#
|
|
|
|
if [[ "$mode" == "" || "$mode" == "--run" ]]; then
|
|
|
|
set -x
|
|
|
|
# postgres wpierw, inne się doń łączą
|
|
docker run -d \
|
|
-v "$static_data_dir/data/postgres":/var/lib/postgresql/ \
|
|
--name $cnt_postgres \
|
|
$img_postgres
|
|
|
|
# a teraz php-fpmy!
|
|
# - frontend
|
|
docker run -d \
|
|
-v "$static_data_dir/data/php-fpm/frontend/":/opt/php/frontend/ \
|
|
-v "$static_data_dir/logs/php-fpm/":/var/log/php-fpm \
|
|
-v "$static_data_dir/run/php-fpm/":/var/run/php-fpm \
|
|
--link $cnt_nginx_internal:rest \
|
|
-e "APP_NAME=frontend" \
|
|
--name $cnt_phpfpm_frontend \
|
|
$img_phpfpm
|
|
|
|
# - rest
|
|
docker run -d \
|
|
-v "$static_data_dir/data/php-fpm/rest/":/opt/php/rest/ \
|
|
-v "$static_data_dir/logs/php-fpm/":/var/log/php-fpm \
|
|
-v "$static_data_dir/run/php-fpm/":/var/run/php-fpm \
|
|
--link $cnt_postgres:$cnt_postgres \
|
|
-e "APP_NAME=rest" \
|
|
--name $cnt_phpfpm_rest \
|
|
$img_phpfpm
|
|
|
|
# - pgadmin
|
|
docker run -d \
|
|
-v "$static_data_dir/configs/pgadmin/":/opt/pgadmin/conf/:ro \
|
|
-v "$static_data_dir/logs/php-fpm/":/var/log/php-fpm \
|
|
-v "$static_data_dir/run/php-fpm/":/var/run/php-fpm \
|
|
--link $cnt_postgres:$cnt_postgres \
|
|
--name $cnt_pgadmin \
|
|
$img_pgadmin
|
|
|
|
# - ldapadmin
|
|
#docker run -d \
|
|
# -v "$static_data_dir/data/php-fpm/ldapadmin/":/opt/php/ldapadmin/ \
|
|
# -v "$static_data_dir/logs/php-fpm/":/var/log/php-fpm \
|
|
# -v "$static_data_dir/run/php-fpm/":/var/run/php-fpm \
|
|
# -e "APP_NAME=ldapadmin" \
|
|
# --name $cnt_phpfpm_ldapadmin \
|
|
# $img_phpfpm
|
|
|
|
# czas na nginxy
|
|
# - publiczny
|
|
docker run -d \
|
|
-v "$static_data_dir/configs/nginx-public/":/etc/nginx/sites-enabled:ro \
|
|
-v "$static_data_dir/logs/nginx-public/":/var/log/nginx/ \
|
|
-v "$static_data_dir/run/php-fpm/":/var/run/php-fpm/ \
|
|
-v "$static_data_dir/data/php-fpm/":/opt/php/ \
|
|
--name $cnt_nginx_public \
|
|
$img_nginx
|
|
|
|
# - wewnętrzny
|
|
docker run -d \
|
|
-v "$static_data_dir/configs/nginx-internal/":/etc/nginx/sites-enabled:ro \
|
|
-v "$static_data_dir/logs/nginx-internal/":/var/log/nginx/ \
|
|
-v "$static_data_dir/run/php-fpm/":/var/run/php-fpm/ \
|
|
-v "$static_data_dir/data/php-fpm/":/opt/php/ \
|
|
--volumes-from $cnt_pgadmin \
|
|
--name $cnt_nginx_internal \
|
|
$img_nginx
|
|
|
|
# - cron
|
|
# czy powinien mieć dostęp do db i ldapa?
|
|
docker run -d \
|
|
-v "$static_data_dir/data/cron/d/":/etc/cron.d/ \
|
|
-v "$static_data_dir/data/cron/daily/":/etc/cron.daily/ \
|
|
-v "$static_data_dir/data/cron/weekly/":/etc/cron.weekly/ \
|
|
-v "$static_data_dir/data/cron/hourly/":/etc/cron.hourly/ \
|
|
-v "$static_data_dir/data/cron/monthly/":/etc/cron.monthly/ \
|
|
--name $cnt_cron \
|
|
$img_cron
|
|
|
|
set +x
|
|
|
|
fi
|
|
|
|
# food for thought
|
|
# https://medium.com/coding-and-deploying-in-the-cloud/simple-logging-to-logentries-from-a-docker-container-d3609073db30
|
|
# http://phusion.github.io/baseimage-docker/
|
|
# https://blog.logentries.com/2014/03/how-to-run-rsyslog-in-a-docker-container-for-logging/
|
|
# https://github.com/octohost/remote_syslog
|
|
# http://www.projectatomic.io/blog/2014/09/running-syslog-within-a-docker-container/ |