[TOOLS][DOCKER] Changed script to write docker-compose.yaml
This commit is contained in:
parent
6cb6eeb8a3
commit
c36259f7c1
165
bin/configure
vendored
165
bin/configure
vendored
@ -1,5 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
ROOT="$(git rev-parse --show-toplevel)"
|
||||||
|
HEIGHT=13
|
||||||
|
WIDTH=51
|
||||||
|
|
||||||
check_retval(){
|
check_retval(){
|
||||||
case $1 in
|
case $1 in
|
||||||
1|255)
|
1|255)
|
||||||
@ -16,14 +20,13 @@ check_input(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
exec 3>&1
|
exec 3>&1
|
||||||
domain_root=$(dialog \
|
domain_root=$(dialog \
|
||||||
--title "Configure" \
|
--title "Configure" \
|
||||||
--ok-label "Ok" \
|
|
||||||
--clear \
|
--clear \
|
||||||
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "Domain root:" 12 51 \
|
--inputbox "Domain root:" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@ -36,7 +39,7 @@ sub_domain=$(dialog \
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "Subdomain (can be empty):" 12 51 \
|
--inputbox "Subdomain (can be empty):" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@ -47,7 +50,7 @@ signed=$(dialog \
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--menu "Use certificate signed by Let's Encrypt?" 12 51 2 \
|
--menu "Use certificate signed by Let's Encrypt?" $HEIGHT $WIDTH 2 \
|
||||||
"Y" "" \
|
"Y" "" \
|
||||||
"n" "" \
|
"n" "" \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
@ -65,7 +68,7 @@ if [ $signed -ne 0 ]; then
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "Email:" 12 51 \
|
--inputbox "Email:" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@ -79,8 +82,8 @@ else
|
|||||||
domain="${sub_domain}.${domain_root}"
|
domain="${sub_domain}.${domain_root}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
root="$(git rev-parse --show-toplevel)"
|
mkdir -p $ROOT/docker/bootstrap
|
||||||
mkdir -p root/docker/bootstrap
|
|
||||||
|
|
||||||
cat > ./docker/bootstrap/bootstrap.env <<EOF
|
cat > ./docker/bootstrap/bootstrap.env <<EOF
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
@ -114,7 +117,7 @@ dbms=$(dialog \
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--menu "Select DBMS:" 12 51 2 \
|
--menu "Select DBMS:" $HEIGHT $WIDTH 2 \
|
||||||
"postgres" "" \
|
"postgres" "" \
|
||||||
"mariadb" "" \
|
"mariadb" "" \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
@ -127,7 +130,7 @@ db=$(dialog \
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "Social database name:" 12 51 \
|
--inputbox "GNU social database name:" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@ -140,7 +143,7 @@ then
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "Database user:" 12 51 \
|
--inputbox "Database user:" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@ -154,7 +157,7 @@ password=$(dialog \
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "Database password:" 12 51 \
|
--inputbox "Database password:" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@ -166,7 +169,7 @@ sitename=$(dialog \
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "Sitename:" 12 51 \
|
--inputbox "Sitename:" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@ -178,7 +181,7 @@ admin_nick=$(dialog \
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "Admin nickname:" 12 51 \
|
--inputbox "Admin nickname:" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@ -190,7 +193,7 @@ admin_password=$(dialog \
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "Admin password:" 12 51 \
|
--inputbox "Admin password:" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@ -202,7 +205,7 @@ profile=$(dialog \
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--menu "Site profile:" 12 51 4 \
|
--menu "Site profile:" $HEIGHT $WIDTH 4 \
|
||||||
"public" "" \
|
"public" "" \
|
||||||
"private" "" \
|
"private" "" \
|
||||||
"community" "" \
|
"community" "" \
|
||||||
@ -217,13 +220,13 @@ mailer_dsn=$(dialog \
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "Mailer dsn:" 12 51 \
|
--inputbox "Mailer dsn:" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
check_input $mailer_dsn
|
check_input $mailer_dsn
|
||||||
|
|
||||||
mkdir -p root/docker/db
|
mkdir -p $ROOT/docker/db
|
||||||
|
|
||||||
if [ "${dbms}" = 'mariadb' ]; then
|
if [ "${dbms}" = 'mariadb' ]; then
|
||||||
exec 3>&1
|
exec 3>&1
|
||||||
@ -232,7 +235,7 @@ if [ "${dbms}" = 'mariadb' ]; then
|
|||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--inputbox "DB root password" 12 51 \
|
--inputbox "DB root password" $HEIGHT $WIDTH \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@ -259,7 +262,7 @@ fi
|
|||||||
|
|
||||||
echo "${database_url}" >> .env.local
|
echo "${database_url}" >> .env.local
|
||||||
|
|
||||||
mkdir -p root/docker/social
|
mkdir -p $ROOT/docker/social
|
||||||
|
|
||||||
cat > ./docker/social/social.env <<EOF
|
cat > ./docker/social/social.env <<EOF
|
||||||
SOCIAL_DBMS="${dbms}"
|
SOCIAL_DBMS="${dbms}"
|
||||||
@ -276,123 +279,53 @@ MAILER_DSN="${mailer_dsn}"
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
##docker-compose
|
|
||||||
|
|
||||||
echo "version: '3.3'" > docker-compose.yaml
|
|
||||||
|
|
||||||
exec 3>&1
|
exec 3>&1
|
||||||
choice=$(dialog \
|
docker_compose=$(dialog \
|
||||||
--title "Services" \
|
--title "Services" \
|
||||||
--clear \
|
--clear \
|
||||||
--ok-label "Ok" \
|
--ok-label "Ok" \
|
||||||
--cancel-label "Exit" \
|
--cancel-label "Exit" \
|
||||||
--checklist "Services to include in docker-compose:" 12 44 6 \
|
--checklist "Services to include in docker-compose:" $HEIGHT $WIDTH 6 \
|
||||||
1 "nginx" on \
|
"nginx" "" on \
|
||||||
2 "certbot" on \
|
"certbot" "" on \
|
||||||
3 "php" on \
|
"php" "" on \
|
||||||
4 "db" on \
|
"db" "" on \
|
||||||
5 "redis" on \
|
"redis" "" on \
|
||||||
|
"mail" "" on \
|
||||||
2>&1 1>&3)
|
2>&1 1>&3)
|
||||||
check_retval $?
|
check_retval $?
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
|
|
||||||
|
echo "version: '3.3'" > docker-compose.yaml
|
||||||
echo "\nservices:" >> docker-compose.yaml
|
echo "\nservices:" >> docker-compose.yaml
|
||||||
|
|
||||||
case $choice in *"1"*)
|
case $docker_compose in *"nginx"*)
|
||||||
echo " nginx:
|
$ROOT/docker/social/nginx
|
||||||
image: nginx:alpine
|
|
||||||
depends_on:
|
|
||||||
- php
|
|
||||||
restart: always
|
|
||||||
tty: false
|
|
||||||
ports:
|
|
||||||
- 80:80
|
|
||||||
- 443:443
|
|
||||||
volumes:
|
|
||||||
# Nginx
|
|
||||||
- ./docker/nginx/nginx.conf:/var/nginx/social.conf
|
|
||||||
- ./docker/nginx/domain.sh:/var/nginx/domain.sh
|
|
||||||
# Certbot
|
|
||||||
- ./docker/certbot/www:/var/www/certbot
|
|
||||||
- ./docker/certbot/.files:/etc/letsencrypt
|
|
||||||
# Social
|
|
||||||
- ./public:/var/www/social/public
|
|
||||||
env_file:
|
|
||||||
- ./docker/bootstrap/bootstrap.env
|
|
||||||
- ./docker/db/db.env
|
|
||||||
command: /bin/sh -c '/var/nginx/domain.sh;
|
|
||||||
while :; do
|
|
||||||
sleep 6h & wait \$\${!};
|
|
||||||
nginx -s reload;
|
|
||||||
done &
|
|
||||||
nginx -g \"daemon off;\"'\n" >> docker-compose.yaml;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $choice in *"2"*)
|
case $docker_compose in *"certbot"*)
|
||||||
echo " certbot:
|
$ROOT/docker/social/certbot
|
||||||
image: certbot/certbot
|
|
||||||
depends_on:
|
|
||||||
- nginx
|
|
||||||
# Check for certificate renewal every 12h as
|
|
||||||
# recomnended by Let's Encryot
|
|
||||||
entrypoint: /bin/sh -c 'trap exit TERM;
|
|
||||||
while :; do
|
|
||||||
certbot renew > /dev/null;
|
|
||||||
sleep 12h & wait \$\${!};
|
|
||||||
done'
|
|
||||||
volumes:
|
|
||||||
- ./docker/certbot/www:/var/www/certbot
|
|
||||||
- ./docker/certbot/.files:/etc/letsencrypt\n" >> docker-compose.yaml;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $choice in *"3"*)
|
case $docker_compose in *"php"*)
|
||||||
echo " php:
|
$ROOT/docker/social/php
|
||||||
build: docker/php
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
restart: always
|
|
||||||
tty: true
|
|
||||||
ports:
|
|
||||||
- 9000:9000
|
|
||||||
volumes:
|
|
||||||
# Entrypoint
|
|
||||||
- ./docker/php/entrypoint.sh:/entrypoint.sh
|
|
||||||
- ./docker/db/wait_for_db.sh:/wait_for_db.sh
|
|
||||||
- ./docker/social/install.sh:/var/entrypoint.d/social_install.sh
|
|
||||||
# Main files
|
|
||||||
- .:/var/www/social
|
|
||||||
env_file:
|
|
||||||
- ./docker/social/social.env
|
|
||||||
- ./docker/db/db.env
|
|
||||||
command: /entrypoint.sh\n" >> docker-compose.yaml;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $choice in *"4"*)
|
case $docker_compose in *"db"*)
|
||||||
echo " db:
|
$ROOT/docker/social/db
|
||||||
image: postgres:alpine
|
|
||||||
restart: always
|
|
||||||
tty: false
|
|
||||||
ports:
|
|
||||||
- 5432:5432
|
|
||||||
environment:
|
|
||||||
- PGDATA=/var/lib/postgres/data
|
|
||||||
env_file:
|
|
||||||
- ./docker/db/db.env
|
|
||||||
volumes:
|
|
||||||
- database:/var/lib/postgres/data\n" >> docker-compose.yaml;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $choice in *"5"*)
|
case $docker_compose in *"redis"*)
|
||||||
echo " redis:
|
$ROOT/docker/social/redis
|
||||||
image: redis:alpine
|
|
||||||
restart: always
|
|
||||||
tty: false
|
|
||||||
ports:
|
|
||||||
- 6379:6379" >> docker-compose.yaml;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
echo "\nvolumes:\n database:" >> docker-compose.yaml
|
case $docker_compose in *"mail"*)
|
||||||
|
$ROOT/docker/social/mail
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "volumes:\n database:" >> docker-compose.yaml
|
||||||
clear
|
clear
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- nginx
|
- nginx
|
||||||
# Check for certificate renewal every 12h as
|
# Check for certificate renewal every 12h as
|
||||||
# recomnended by Let's Encryot
|
# recommended by Let's Encrypt
|
||||||
entrypoint: /bin/sh -c 'trap exit TERM;
|
entrypoint: /bin/sh -c 'trap exit TERM;
|
||||||
while :; do
|
while :; do
|
||||||
certbot renew > /dev/null;
|
certbot renew > /dev/null;
|
||||||
|
16
docker/social/certbot
Executable file
16
docker/social/certbot
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo " certbot:
|
||||||
|
image: certbot/certbot
|
||||||
|
depends_on:
|
||||||
|
- nginx
|
||||||
|
# Check for certificate renewal every 12h as
|
||||||
|
# recommended by Let's Encrypt
|
||||||
|
entrypoint: /bin/sh -c 'trap exit TERM;
|
||||||
|
while :; do
|
||||||
|
certbot renew > /dev/null;
|
||||||
|
sleep 12h & wait \$\${!};
|
||||||
|
done'
|
||||||
|
volumes:
|
||||||
|
- ./docker/certbot/www:/var/www/certbot
|
||||||
|
- ./docker/certbot/.files:/etc/letsencrypt\n" >> docker-compose.yaml
|
14
docker/social/db
Executable file
14
docker/social/db
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo " db:
|
||||||
|
image: postgres:alpine
|
||||||
|
restart: always
|
||||||
|
tty: false
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
environment:
|
||||||
|
- PGDATA=/var/lib/postgres/data
|
||||||
|
env_file:
|
||||||
|
- ./docker/db/db.env
|
||||||
|
volumes:
|
||||||
|
- database:/var/lib/postgres/data\n" >> docker-compose.yaml
|
17
docker/social/mail
Executable file
17
docker/social/mail
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo " mail:
|
||||||
|
build: docker/mail
|
||||||
|
env_file:
|
||||||
|
- ./docker/mail/mail.env
|
||||||
|
ports:
|
||||||
|
- 25:25
|
||||||
|
- 143:143
|
||||||
|
- 587:587
|
||||||
|
- 993:993
|
||||||
|
volumes:
|
||||||
|
- ./docker/mail/mail:/var/mail
|
||||||
|
- ./docker/mail/config:/etc/mail
|
||||||
|
# Certbot
|
||||||
|
- ./docker/certbot/www:/var/www/certbot
|
||||||
|
- ./docker/certbot/.files:/etc/letsencrypt\n" >> docker-compose.yaml
|
29
docker/social/nginx
Executable file
29
docker/social/nginx
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo " nginx:
|
||||||
|
image: nginx:alpine
|
||||||
|
depends_on:
|
||||||
|
- php
|
||||||
|
restart: always
|
||||||
|
tty: false
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
- 443:443
|
||||||
|
volumes:
|
||||||
|
# Nginx
|
||||||
|
- ./docker/nginx/nginx.conf:/var/nginx/social.conf
|
||||||
|
- ./docker/nginx/domain.sh:/var/nginx/domain.sh
|
||||||
|
# Certbot
|
||||||
|
- ./docker/certbot/www:/var/www/certbot
|
||||||
|
- ./docker/certbot/.files:/etc/letsencrypt
|
||||||
|
# Social
|
||||||
|
- ./public:/var/www/social/public
|
||||||
|
env_file:
|
||||||
|
- ./docker/bootstrap/bootstrap.env
|
||||||
|
- ./docker/db/db.env
|
||||||
|
command: /bin/sh -c '/var/nginx/domain.sh;
|
||||||
|
while :; do
|
||||||
|
sleep 6h & wait \$\${!};
|
||||||
|
nginx -s reload;
|
||||||
|
done &
|
||||||
|
nginx -g \"daemon off;\"'\n" >> docker-compose.yaml
|
21
docker/social/php
Executable file
21
docker/social/php
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo " php:
|
||||||
|
build: docker/php
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
restart: always
|
||||||
|
tty: true
|
||||||
|
ports:
|
||||||
|
- 9000:9000
|
||||||
|
volumes:
|
||||||
|
# Entrypoint
|
||||||
|
- ./docker/php/entrypoint.sh:/entrypoint.sh
|
||||||
|
- ./docker/db/wait_for_db.sh:/wait_for_db.sh
|
||||||
|
- ./docker/social/install.sh:/var/entrypoint.d/social_install.sh
|
||||||
|
# Main files
|
||||||
|
- .:/var/www/social
|
||||||
|
env_file:
|
||||||
|
- ./docker/social/social.env
|
||||||
|
- ./docker/db/db.env
|
||||||
|
command: /entrypoint.sh\n" >> docker-compose.yaml
|
8
docker/social/redis
Executable file
8
docker/social/redis
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo " redis:
|
||||||
|
image: redis:alpine
|
||||||
|
restart: always
|
||||||
|
tty: false
|
||||||
|
ports:
|
||||||
|
- 6379:6379\n" >> docker-compose.yaml
|
Loading…
Reference in New Issue
Block a user