From b691b631e92218150fe822744cb14d27bc7b0cc9 Mon Sep 17 00:00:00 2001 From: Rio6 Date: Sun, 12 Sep 2021 15:12:32 -0400 Subject: [PATCH] convert docker.sh to docker-compose and start ceod automatically --- .drone/auth1-setup.sh | 10 +++----- .drone/coffee-setup.sh | 6 ++--- .drone/mail-setup.sh | 4 +-- .drone/phosphoric-acid-setup.sh | 9 +++---- .drone/supervise.sh | 17 +++++++++++++ docker-compose.yml | 44 +++++++++++++++++++++++++++++++++ docker-entrypoint.sh | 10 ++++++++ docker.sh | 41 ------------------------------ 8 files changed, 82 insertions(+), 59 deletions(-) create mode 100755 .drone/supervise.sh create mode 100644 docker-compose.yml create mode 100755 docker-entrypoint.sh delete mode 100755 docker.sh diff --git a/.drone/auth1-setup.sh b/.drone/auth1-setup.sh index 57baa61..a96d017 100755 --- a/.drone/auth1-setup.sh +++ b/.drone/auth1-setup.sh @@ -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 diff --git a/.drone/coffee-setup.sh b/.drone/coffee-setup.sh index 454fc2c..02ecc55 100755 --- a/.drone/coffee-setup.sh +++ b/.drone/coffee-setup.sh @@ -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 </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 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7c4ea6f --- /dev/null +++ b/docker-compose.yml @@ -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 diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100755 index 0000000..8d430b2 --- /dev/null +++ b/docker-entrypoint.sh @@ -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 diff --git a/docker.sh b/docker.sh deleted file mode 100755 index 9c6fdf9..0000000 --- a/docker.sh +++ /dev/null @@ -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 ' >&2 - exit 1 - ;; -esac