convert docker.sh to docker-compose and start ceod automatically

This commit is contained in:
Rio6 2021-09-12 15:12:32 -04:00
parent 35e577b866
commit b691b631e9
8 changed files with 82 additions and 59 deletions

View File

@ -46,7 +46,7 @@ cp .drone/nsswitch.conf /etc/nsswitch.conf
service nslcd start
ldapadd -c -f .drone/data.ldif -Y EXTERNAL -H ldapi:///
if [ -z "$CI" ]; then
ldapadd -c -f .drone/uwldap_data.ldif -Y EXTERNAL -H ldapi:///
ldapadd -c -f .drone/uwldap_data.ldif -Y EXTERNAL -H ldapi:/// ||:
fi
# KERBEROS
@ -95,12 +95,10 @@ done
apt install -y netcat-openbsd
# sync with phosphoric-acid
nc -l 0.0.0.0 9000
nc -l 0.0.0.0 9000 &
if [ -z "$CI" ]; then
# sync with coffee
nc -l 0.0.0.0 9001
nc -l 0.0.0.0 9001 &
# sync with mail
nc -l 0.0.0.0 9002
nc -l 0.0.0.0 9002 &
fi
sleep infinity

View File

@ -18,7 +18,7 @@ service mysql stop
sed -E -i 's/^(bind-address[[:space:]]+= 127.0.0.1)$/#\1/' /etc/mysql/mariadb.conf.d/50-server.cnf
service mysql start
cat <<EOF | mysql
CREATE USER 'mysql' IDENTIFIED BY 'mysql';
CREATE USER IF NOT EXISTS 'mysql' IDENTIFIED BY 'mysql';
GRANT ALL PRIVILEGES ON *.* TO 'mysql' WITH GRANT OPTION;
EOF
@ -52,6 +52,4 @@ if [ -z "$CI" ]; then
fi
# sync with phosphoric-acid
nc -l 0.0.0.0 9000
sleep infinity
nc -l 0.0.0.0 9000 &

View File

@ -18,6 +18,4 @@ apt install -y netcat-openbsd
auth_setup mail
# sync with phosphoric-acid
nc -l 0.0.0.0 9000
sleep infinity
nc -l 0.0.0.0 9000 &

View File

@ -5,9 +5,9 @@ set -ex
. .drone/common.sh
# set FQDN in /etc/hosts
add_fqdn_to_hosts $(get_ip_addr $(hostname)) phosphoric-acid
add_fqdn_to_hosts $(get_ip_addr auth1) auth1
add_fqdn_to_hosts $(get_ip_addr coffee) coffee
add_fqdn_to_hosts "$(get_ip_addr $(hostname))" phosphoric-acid
add_fqdn_to_hosts "$(get_ip_addr auth1)" auth1
add_fqdn_to_hosts "$(get_ip_addr coffee)" coffee
# mail container doesn't run in CI
if [ -z "$CI" ]; then
add_fqdn_to_hosts $(get_ip_addr mail) mail
@ -25,12 +25,11 @@ cp /etc/skel/* /users/skel/
# create directories for users
for user in ctdalek regular1 exec1; do
mkdir /users/$user
mkdir -p /users/$user
chown $user:$user /users/$user
done
sync_with coffee
if [ -z "$CI" ]; then
sync_with mail
sleep infinity
fi

17
.drone/supervise.sh Executable file
View File

@ -0,0 +1,17 @@
#!/bin/sh
# A script that supervises a program. The program is restarted TIMEOUT second after it exits.
# SIGHUP restarts the program
# SIGTERM and SIGINT stops the program
TIMEOUT=1
running=1
trap 'kill -TERM $! 2>/dev/null' HUP
trap 'running=0; kill -TERM $! 2>/dev/null' TERM INT
trap 'running=0; kill -KILL $! 2>/dev/null' EXIT
while [ "$running" = 1 ]; do
"$@" &
wait
sleep "$TIMEOUT"
done

44
docker-compose.yml Normal file
View File

@ -0,0 +1,44 @@
version: "3.6"
x-common: &common
image: python:3.7-buster
volumes:
- .:$PWD
environment:
FLASK_APP: ceod.api
FLASK_ENV: development
working_dir: $PWD
entrypoint:
- ./docker-entrypoint.sh
services:
auth1:
<<: *common
image: debian:buster
hostname: auth0
command: auth1
coffee:
<<: *common
command: coffee
hostname: coffee
depends_on:
- auth1
mail:
<<: *common
command: mail
hostname: mail
depends_on:
- auth1
phosphoric-acid:
<<: *common
command: phosphoric-acid
hostname: phosphoric-acid
depends_on:
- auth1
- coffee
- mail
# vim: expandtab sw=2 ts=2

10
docker-entrypoint.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh -e
host="$1"
[ -x ".drone/$host-setup.sh" ] && "./.drone/$host-setup.sh"
if [ "$host" = auth1 ]; then
exec sleep infinity
else
python3 -m pip install -r requirements.txt -r dev-requirements.txt
exec ./.drone/supervise.sh flask run -h 0.0.0.0 -p 9987
fi

View File

@ -1,41 +0,0 @@
#!/bin/bash
set -x
case $1 in
up)
if ! [ -d venv ]; then
docker run --rm -v "$PWD:$PWD" -w "$PWD" python:3.7-buster \
sh -c "python -m venv venv && . venv/bin/activate && pip install -r dev-requirements.txt && pip install -r requirements.txt"
fi
docker network create ceod
for host in auth1 coffee mail phosphoric-acid; do
if [ $host = auth1 ]; then
image=debian:buster
else
image=python:3.7-buster
fi
docker run \
--detach \
--name $host \
--hostname $host \
--network ceod \
--volume "$PWD:$PWD" \
--workdir "$PWD" \
--env FLASK_APP=ceod.api \
--env FLASK_ENV=development \
$image .drone/$host-setup.sh
done
;;
down)
for host in auth1 coffee mail phosphoric-acid; do
docker kill $host
docker rm $host
done
docker network rm ceod
;;
*)
echo 'Usage: docker.sh <up|down>' >&2
exit 1
;;
esac