Changes: when we deploy our docker images we now also build/deploy the internal driver image; fixed .dockerignore; moved integration test data into the driver; fixed cast in oracle db_time target objective.

This commit is contained in:
dvanaken
2019-12-03 21:26:59 -05:00
committed by Dana Van Aken
parent c4433181f7
commit 7be5b89975
57 changed files with 200 additions and 113 deletions

View File

@@ -1 +0,0 @@
*.swp

3
docker/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
docker-compose*.yml
!docker-compose.build.yml
!docker-compose.up.yml

14
docker/Dockerfile.base Normal file
View File

@@ -0,0 +1,14 @@
FROM ubuntu:18.04
ARG DEBUG=true
ENV DEBIAN_FRONTEND=noninteractive
COPY ./docker/install.sh ./server/website/requirements.txt /
WORKDIR /
RUN mkdir -p /app \
&& chmod +x install.sh \
&& ./install.sh base
ENV DEBUG=$DEBUG

View File

@@ -1,17 +1,11 @@
FROM ubuntu:18.04
FROM ottertune-base
ARG GRADLE_VERSION=gradle-5.5.1
ENV DEBIAN_FRONTEND=noninteractive
ENV GRADLE_HOME=/opt/${GRADLE_VERSION}
ENV PATH=${GRADLE_HOME}/bin:${PATH}
COPY ./docker/install.sh ./server/website/requirements.txt /
WORKDIR /
RUN mkdir -p /app \
&& chmod +x install.sh \
&& sh install.sh driver
RUN /install.sh driver
COPY ./client /app

View File

@@ -1,13 +1,4 @@
FROM ubuntu:18.04
ENV DEBIAN_FRONTEND=noninteractive
COPY ./docker/install.sh ./server/website/requirements.txt /
WORKDIR /
RUN mkdir -p /app \
&& chmod +x install.sh \
&& sh install.sh web
FROM ottertune-base
COPY ./server /app
@@ -16,7 +7,8 @@ WORKDIR /app/website
COPY ./docker/credentials.py ./website/settings
COPY ./docker/start.sh ./docker/start-test.sh ./docker/wait-for-it.sh ./
RUN chmod +x ./*.sh \
RUN /install.sh web \
&& chmod +x ./*.sh \
&& sed s/'@localhost'/'@rabbitmq'/g ./website/settings/common.py > tmp \
&& mv tmp ./website/settings/common.py

View File

@@ -20,7 +20,7 @@ else
DB_PORT="${DB_PORT:-5432}"
fi
WEB_ENTRYPOINT="${WEB_ENTRYPOINT:-start.sh}"
WEB_ENTRYPOINT="${WEB_ENTRYPOINT:-./start.sh}"
file="$(test -z "$1" && echo "docker-compose.$BACKEND.yml" || echo "$1")"
@@ -30,9 +30,6 @@ version: "3"
services:
web:
build:
context: ../
dockerfile: ./docker/Dockerfile.web
image: ottertune-web
container_name: web
expose:
@@ -56,16 +53,13 @@ services:
DB_PORT: '$DB_PORT'
MAX_DB_CONN_ATTEMPTS: 30
working_dir: /app/website
entrypoint: $WEB_ENTRYPOINT
entrypoint: $WEB_ENTRYPOINT
labels:
NAME: "ottertune-web"
networks:
- ottertune-net
driver:
build:
context: ../
dockerfile: ./docker/Dockerfile.driver
image: ottertune-driver
container_name: driver
depends_on:

View File

@@ -4,7 +4,7 @@ import string
from os import environ as env
debug = env.get('DEBUG', 'true').lower() == 'true'
backend = env.get('BACKEND', 'mysql')
backend = env.get('BACKEND', 'postgresql')
db_name = env.get('DB_NAME', 'ottertune')
db_host = env.get('DB_HOST', 'localhost')
db_pwd = env.get('DB_PASSWORD', '')

View File

@@ -0,0 +1,32 @@
version: "3"
services:
base:
build:
context: ../
dockerfile: ./docker/Dockerfile.base
args:
DEBUG: "true"
image: ottertune-base
labels:
NAME: "ottertune-base"
web:
build:
context: ../
dockerfile: ./docker/Dockerfile.web
image: ottertune-web
depends_on:
- base
labels:
NAME: "ottertune-web"
driver:
build:
context: ../
dockerfile: ./docker/Dockerfile.driver
image: ottertune-driver
depends_on:
- base
labels:
NAME: "ottertune-driver"

View File

@@ -2,9 +2,6 @@ version: "3"
services:
web:
build:
context: ../
dockerfile: ./docker/Dockerfile.web
image: ottertune-web
container_name: web
expose:
@@ -20,12 +17,12 @@ services:
environment:
DEBUG: 'true'
ADMIN_PASSWORD: 'changeme'
BACKEND: 'mysql'
BACKEND: 'postgresql'
DB_NAME: 'ottertune'
DB_USER: 'root'
DB_USER: 'postgres'
DB_PASSWORD: 'ottertune'
DB_HOST: 'backend'
DB_PORT: '3306'
DB_PORT: '5432'
DB_OPTS: '{}'
MAX_DB_CONN_ATTEMPTS: 30
working_dir: /app/website
@@ -36,9 +33,6 @@ services:
- ottertune-net
driver:
build:
context: ../
dockerfile: ./docker/Dockerfile.driver
image: ottertune-driver
container_name: driver
depends_on:
@@ -51,25 +45,6 @@ services:
networks:
- ottertune-net
backend:
image: mysql:5.7
container_name: backend
restart: always
environment:
MYSQL_ROOT_PASSWORD: 'ottertune'
MYSQL_PASSWORD: 'ottertune'
MYSQL_DATABASE: 'ottertune'
expose:
- "3306"
ports:
- "3306:3306"
labels:
NAME: "ottertune-backend"
volumes:
- mysql_data:/var/lib/mysql
networks:
- ottertune-net
rabbitmq:
image: "rabbitmq:3-management"
container_name: rabbitmq
@@ -89,9 +64,24 @@ services:
NAME: "rabbitmq"
networks:
- ottertune-net
volumes:
mysql_data:
backend:
container_name: backend
restart: always
image: postgres:9.6
environment:
POSTGRES_USER: 'postgres'
POSTGRES_PASSWORD: 'ottertune'
POSTGRES_DB: 'ottertune'
expose:
- "5432"
ports:
- "5432:5432"
labels:
NAME: "ottertune-backend"
networks:
- ottertune-net
networks:
ottertune-net:
driver: bridge

View File

@@ -2,16 +2,6 @@
service="$1"
echo ""
if [ -z "$service" ] || ([ "$service" != "web" ] && [ "$service" != "driver" ])
then
echo "Invalid value for service: '$service'"
echo ""
echo "Usage: $0 [web|driver]"
exit 1
fi
echo ""
echo "-=------------------------------------------------------"
echo " Starting installation for service '$service'..."
@@ -19,39 +9,65 @@ echo "-=------------------------------------------------------"
if [ "$DEBUG" = true ]
then
echo ""
echo "Command-line Args:"
echo " - service: $service"
echo ""
echo "Environment Variables:"
echo " - DEBIAN_FRONTEND: $DEBIAN_FRONTEND"
echo " - PATH: $PATH"
echo " - GRADLE_VERSION: $GRADLE_VERSION"
echo " - GRADLE_HOME: $GRADLE_HOME"
echo " - PATH: $PATH"
echo ""
fi
apt_pkgs="python3.6 python3-setuptools python3-pip libssl-dev git"
apt_pkgs=""
rm_pkgs=""
install_gradle=false
pip_reqs=/requirements.txt
pip_common_pkgs="Fabric3 numpy requests"
master_pip_reqs_file=/requirements.txt
pip_reqs_file="/${service}-requirements.txt"
if [ "$service" = "web" ]
if [ "$service" = "base" ]
then
apt_pkgs="$apt_pkgs python3-dev gcc mysql-client libmysqlclient-dev python-mysqldb postgresql-client"
apt_pkgs="python3.6 python3-setuptools python3-pip libssl-dev"
rm_pkgs="$rm_pkgs gcc"
# Filter common pip packages
for pip_pkg in $pip_common_pkgs
do
grep "^$pip_pkg" "$master_pip_reqs_file" >> "$pip_reqs_file"
done
elif [ "$service" = "web" ]
then
apt_pkgs="python3-dev gcc mysql-client libmysqlclient-dev python-mysqldb postgresql-client"
rm_pkgs="gcc"
pip_skip_pkgs="$pip_common_pkgs astroid autopep8 git-lint pycodestyle pylint"
cp "$master_pip_reqs_file" "$pip_reqs_file"
for pip_pkg in $pip_skip_pkgs
do
sed -i "/$pip_pkg/d" "$pip_reqs_file"
done
elif [ "$service" = "driver" ]
then
apt_pkgs="openssh-server openjdk-11-jdk unzip wget"
rm_pkgs="unzip wget"
install_gradle=true
elif [ "$service" = "driver-internal" ]
then
apt_pkgs="openssh-server vim"
else
apt_pkgs="$apt_pkgs openssh-server openjdk-11-jdk checkstyle unzip wget"
# Hack: filter driver pip dependencies
>tmp.txt
for pip_pkg in autopep8 Fabric3 numpy requests pycodestyle pylint git-lint
do
grep "^$pip_pkg" "$pip_reqs" >> tmp.txt
done
mv tmp.txt "$pip_reqs"
install_gradle=true
rm_pkgs="$rm_pkgs unzip wget"
echo ""
echo "ERROR: Invalid value for service: '$service'"
echo ""
echo "Usage: $0 [base|web|driver|driver-internal]"
exit 1
fi
echo -e "\nUpdating package index..."
@@ -64,13 +80,13 @@ then
apt-get install -y --no-install-recommends $apt_pkgs
fi
if [ -f "$pip_reqs" ]
if [ -f "$pip_reqs_file" ] && [ -s "$pip_reqs_file" ]
then
# Install required pip packages
python3 --version
pip3 --version
echo -e "\nInstalling pip packages: `cat "$pip_reqs" | tr '\n' ' '`"
pip3 install --no-cache-dir --disable-pip-version-check -r "$pip_reqs"
echo -e "\nInstalling pip packages: `cat "$pip_reqs_file" | tr '\n' ' '`"
pip3 install --no-cache-dir --disable-pip-version-check -r "$pip_reqs_file"
fi
if [ "$install_gradle" = true ]

View File

@@ -1,5 +1,7 @@
#!/bin/bash
addrport="0.0.0.0:8000"
# Wait for backend connection
/bin/bash wait-for-it.sh
@@ -7,6 +9,10 @@
python3 manage.py makemigrations website
python3 manage.py migrate
python3 manage.py createuser admin $ADMIN_PASSWORD --superuser
python3 manage.py startcelery
python3 manage.py runserver 0.0.0.0:8000
echo ""
echo "-=------------------------------------------------------"
echo " Starting the web server on '$addrport'..."
echo "-=------------------------------------------------------"
python3 manage.py runserver "$addrport"