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:
@@ -1 +0,0 @@
|
||||
*.swp
|
||||
3
docker/.gitignore
vendored
Normal file
3
docker/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
docker-compose*.yml
|
||||
!docker-compose.build.yml
|
||||
!docker-compose.up.yml
|
||||
14
docker/Dockerfile.base
Normal file
14
docker/Dockerfile.base
Normal 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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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', '')
|
||||
|
||||
32
docker/docker-compose.build.yml
Normal file
32
docker/docker-compose.build.yml
Normal 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"
|
||||
@@ -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
|
||||
|
||||
@@ -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 ]
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user