Initial commit
This commit is contained in:
parent
4cd30eea87
commit
524b9f1c0e
5
adminer/Dockerfile
Normal file
5
adminer/Dockerfile
Normal file
@ -0,0 +1,5 @@
|
||||
ARG IMAGE_NAME
|
||||
ARG IMAGE_VERSION
|
||||
FROM ${IMAGE_NAME}:${IMAGE_VERSION}
|
||||
|
||||
RUN sed -i 's/max_execution_time.*/max_execution_time = 600/g' /etc/php5/cli/php.ini && sed -i 's/max_input_time.*/max_input_time = 600/g' /etc/php5/fpm/php.ini
|
||||
53
adminer/run.sh
Executable file
53
adminer/run.sh
Executable file
@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
|
||||
|
||||
IMAGE_NAME="clue/adminer"
|
||||
IMAGE_VERSION="latest"
|
||||
|
||||
PROJECT_NAME=adminer
|
||||
|
||||
|
||||
source ${SCRIPT_PATH}/../common.shinc
|
||||
|
||||
#
|
||||
# Project specific variables
|
||||
#
|
||||
|
||||
DOMAIN_NAME="adminer.loc"
|
||||
|
||||
init() {
|
||||
__init
|
||||
|
||||
# Create networks
|
||||
NETWORKS=(${DB_NETWORK} ${PROXY_NETWORK})
|
||||
__createNetworks
|
||||
|
||||
__build || return $?
|
||||
|
||||
echo " docker create \
|
||||
--name ${PROJECT_NAME} \
|
||||
-e VIRTUAL_HOST=${DOMAIN_NAME} \
|
||||
--restart=unless-stopped \
|
||||
--net ${DB_NETWORK} \
|
||||
--net ${PROXY_NETWORK} \
|
||||
${PROJECT_NAME}:latest"
|
||||
|
||||
docker create \
|
||||
--name ${PROJECT_NAME} \
|
||||
-e VIRTUAL_HOST=${DOMAIN_NAME} \
|
||||
--restart=unless-stopped \
|
||||
${PROJECT_NAME}:latest
|
||||
|
||||
[[ $? -ne 0 ]] && return 1
|
||||
|
||||
docker network connect ${DB_NETWORK} ${PROJECT_NAME}
|
||||
[[ $? -ne 0 ]] && return 1
|
||||
|
||||
docker network connect ${PROXY_NETWORK} ${PROJECT_NAME}
|
||||
[[ $? -ne 0 ]] && return 1
|
||||
|
||||
__ask_to_start
|
||||
}
|
||||
|
||||
"$@"
|
||||
104
common.shinc
Normal file
104
common.shinc
Normal file
@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
REQUIRED_VARIABLES=(PROJECT_NAME SCRIPT_PATH IMAGE_NAME IMAGE_VERSION)
|
||||
|
||||
for _var in ${REQUIRED_VARIABLES[@]}; do
|
||||
if [ -z ${!_var+x} ]; then
|
||||
echo "Missing definition of variable: ${_var}"
|
||||
exit 2
|
||||
fi
|
||||
done
|
||||
|
||||
source ${SCRIPT_PATH}/../settings.shinc
|
||||
source ${SCRIPT_PATH}/../functions.shinc
|
||||
|
||||
#
|
||||
# Commonly used functions
|
||||
#
|
||||
|
||||
stop() {
|
||||
__msg "Stopping container... " 0 no
|
||||
|
||||
STATUS=$(docker stop ${PROJECT_NAME} > /dev/null 2>&1)
|
||||
if [[ $? -ne 0 ]]; then
|
||||
__err "${STATUS}"
|
||||
return 1
|
||||
else
|
||||
__success "[ok]"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
start() {
|
||||
__msg "Starting container... " 0 no
|
||||
STATUS=$(docker start ${PROJECT_NAME} 2>&1)
|
||||
if [[ $? -ne 0 ]]; then
|
||||
__err "${STATUS}"
|
||||
return 1
|
||||
else
|
||||
__success "[ok]"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
remove() {
|
||||
stop
|
||||
|
||||
__msg "Removing container... " 0 no
|
||||
STATUS=$(docker rm ${PROJECT_NAME} 2>&1)
|
||||
if [[ $? -ne 0 ]]; then
|
||||
__err "${STATUS}"
|
||||
return 1
|
||||
else
|
||||
__success "[ok]"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
logs() {
|
||||
docker logs "$@" ${PROJECT_NAME}
|
||||
return $?
|
||||
}
|
||||
|
||||
exec() {
|
||||
# Test if bash is available
|
||||
docker exec -it ${PROJECT_NAME} /bin/bash -c "echo 'test'" > /dev/null 2>&1
|
||||
|
||||
if [[ $? -eq 0 ]]; then
|
||||
docker exec -it ${PROJECT_NAME} /bin/bash
|
||||
return $?
|
||||
fi
|
||||
|
||||
# Test if bash is available
|
||||
docker exec -it ${PROJECT_NAME} /bin/sh -c "echo 'test'" > /dev/null 2>&1
|
||||
if [[ $? -eq 0 ]]; then
|
||||
docker exec -it ${PROJECT_NAME} /bin/sh
|
||||
|
||||
return $?
|
||||
fi
|
||||
|
||||
__err "Could not find either sh or bash in the container"
|
||||
return 1
|
||||
}
|
||||
|
||||
help() {
|
||||
echo "┌──────────────────────────────────────────────────────────────┐"
|
||||
echo "│ Available commands │"
|
||||
echo "└──────────────────────────────────────────────────────────────┘"
|
||||
echo -e -n "$LOG"
|
||||
echo " > init - Initializes the environment"
|
||||
echo " > start - Start containers"
|
||||
echo " > stop - Stops containers"
|
||||
echo " > remove - Removes traces of the container"
|
||||
echo " > logs - Shows logs"
|
||||
echo " > exec - Enters the containers tty"
|
||||
echo " > help - Display this help"
|
||||
echo -e -n "${NORMAL}"
|
||||
echo "└──────────────────────────────────────────────────────────────┘"
|
||||
|
||||
return 0
|
||||
}
|
||||
108
functions.shinc
Normal file
108
functions.shinc
Normal file
@ -0,0 +1,108 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
|
||||
# Indent output by 2 x {n} spaces
|
||||
__indent() {
|
||||
if [[ $1 != "" ]] && [[ $1 -ne 0 ]]; then
|
||||
printf ' %0.s' {1..$1}
|
||||
fi
|
||||
}
|
||||
|
||||
__newLine() {
|
||||
if [[ $1 = "" ]]; then
|
||||
echo
|
||||
fi
|
||||
}
|
||||
|
||||
__msg() {
|
||||
echo -ne "${C_WHITE}"
|
||||
__indent $2
|
||||
echo -ne "$1${C_NONE}"
|
||||
__newLine $3
|
||||
}
|
||||
|
||||
__warn() {
|
||||
echo -ne "${C_WARN}"
|
||||
__indent $2
|
||||
echo -ne "$1${C_NONE}"
|
||||
__newLine $3
|
||||
}
|
||||
|
||||
__success() {
|
||||
echo -ne "${C_GREEN}"
|
||||
__indent $2
|
||||
echo -ne "$1${C_NONE}"
|
||||
__newLine $3
|
||||
}
|
||||
|
||||
__err() {
|
||||
echo -ne "${C_ERR}"
|
||||
__indent $2
|
||||
echo -ne "$1${C_NONE}"
|
||||
__newLine $3
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Internal functions
|
||||
#
|
||||
|
||||
__createNetworks() {
|
||||
for _var in ${NETWORKS[@]}; do
|
||||
if [[ ${_var} = "" ]]; then
|
||||
continue
|
||||
fi
|
||||
docker network inspect ${_var} > /dev/null 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
# If it does not, create it
|
||||
__warn "The network ${_var} does not exist. Creating... " 1 no
|
||||
STATUS=$(docker network create ${_var} 2>&1)
|
||||
if [[ $? -ne 0 ]]; then
|
||||
__err "${STATUS}"
|
||||
return 117
|
||||
else
|
||||
__success "[ok]"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
init() {
|
||||
__err "The init function was not overridden"
|
||||
|
||||
return 137
|
||||
}
|
||||
|
||||
__init() {
|
||||
__msg "Initializing ${PROJECT_NAME}"
|
||||
|
||||
# Make sure we have the latest build
|
||||
docker pull ${IMAGE_NAME}:${IMAGE_VERSION}
|
||||
|
||||
return $?
|
||||
}
|
||||
|
||||
__build() {
|
||||
docker build \
|
||||
--build-arg IMAGE_NAME=${IMAGE_NAME} \
|
||||
--build-arg IMAGE_VERSION=${IMAGE_VERSION} \
|
||||
-t ${PROJECT_NAME}:latest \
|
||||
${SCRIPT_PATH}
|
||||
|
||||
return $?
|
||||
}
|
||||
|
||||
|
||||
__ask_to_start() {
|
||||
__success "Start the container? [(y)/n]... "
|
||||
read START
|
||||
|
||||
if [[ ${START} != "" ]] && [[ ${START} != "y" ]] && [[ ${START} != "Y" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
start
|
||||
return $?
|
||||
}
|
||||
48
mailhog/run.sh
Executable file
48
mailhog/run.sh
Executable file
@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
|
||||
|
||||
IMAGE_NAME="mailhog/mailhog"
|
||||
IMAGE_VERSION="latest"
|
||||
|
||||
PROJECT_NAME=mailhog
|
||||
|
||||
|
||||
source ${SCRIPT_PATH}/../common.shinc
|
||||
|
||||
#
|
||||
# Project specific variables
|
||||
#
|
||||
|
||||
SMTP_PORT=1025
|
||||
WEB_PORT=8025
|
||||
DOMAIN_NAME="mailhog.loc"
|
||||
|
||||
|
||||
init() {
|
||||
__init
|
||||
|
||||
NETWORKS=(${SMTP_NETWORK} ${PROXY_NETWORK})
|
||||
__createNetworks
|
||||
|
||||
docker create \
|
||||
--name ${PROJECT_NAME} \
|
||||
-e VIRTUAL_HOST=${DOMAIN_NAME} \
|
||||
-e VIRTUAL_PORT=${WEB_PORT} \
|
||||
-p ${SMTP_PORT}:1025 \
|
||||
${IMAGE_NAME}:${IMAGE_VERSION}
|
||||
|
||||
[[ $? -ne 0 ]] && return 1
|
||||
|
||||
docker network connect ${SMTP_NETWORK} ${PROJECT_NAME}
|
||||
[[ $? -ne 0 ]] && return 1
|
||||
|
||||
docker network connect ${PROXY_NETWORK} ${PROJECT_NAME}
|
||||
[[ $? -ne 0 ]] && return 1
|
||||
|
||||
__ask_to_start
|
||||
}
|
||||
|
||||
"$@"
|
||||
|
||||
exit $?
|
||||
69
maria-db/run.sh
Executable file
69
maria-db/run.sh
Executable file
@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
|
||||
|
||||
IMAGE_NAME="mariadb"
|
||||
IMAGE_VERSION="10.1"
|
||||
|
||||
PROJECT_NAME=maria-db
|
||||
|
||||
|
||||
source ${SCRIPT_PATH}/../common.shinc
|
||||
|
||||
#
|
||||
# Project specific variables
|
||||
#
|
||||
|
||||
DB_VOLUME=mariadb_shared
|
||||
BACKUP_DIR=${SCRIPT_PATH}/backup
|
||||
|
||||
init() {
|
||||
__init
|
||||
|
||||
# Create networks
|
||||
NETWORKS=(${DB_NETWORK})
|
||||
__createNetworks
|
||||
|
||||
# Create the database container
|
||||
docker create \
|
||||
--name ${PROJECT_NAME} \
|
||||
--restart=unless-stopped \
|
||||
-v ${DB_VOLUME}:/var/lib/mysql \
|
||||
-e MYSQL_ROOT_PASSWORD=${DB_PASSWORD} \
|
||||
--net ${DB_NETWORK} \
|
||||
${IMAGE_NAME}:${IMAGE_VERSION}
|
||||
|
||||
[[ $? -ne 0 ]] && return 1
|
||||
|
||||
__ask_to_start
|
||||
}
|
||||
|
||||
# Used for exporting the whole database filesystem
|
||||
export() {
|
||||
stop
|
||||
local user=$(id -u)
|
||||
|
||||
mkdir -p ${BACKUP_DIR} && \
|
||||
docker run --rm --volumes-from ${PROJECT_NAME} -v ${BACKUP_DIR}:/backup busybox tar cvf /backup/backup.tar /var/lib/mysql && chown -R ${user}:${user} ./backup
|
||||
if [[ $? -ne 0 ]]; then
|
||||
__err "Could not create the backup"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
start
|
||||
|
||||
return $?
|
||||
}
|
||||
|
||||
# Used for importing the whole database filesystem
|
||||
import() {
|
||||
stop
|
||||
docker run --rm --volumes-from ${PROJECT_NAME} -v ${BACKUP_DIR}:/backup busybox sh -c "rm -rf /var/lib/mysql/* && tar xvf /backup/backup.tar --directory /"
|
||||
start
|
||||
|
||||
return $?
|
||||
}
|
||||
|
||||
"$@"
|
||||
|
||||
exit $?
|
||||
5
nginx/Dockerfile
Normal file
5
nginx/Dockerfile
Normal file
@ -0,0 +1,5 @@
|
||||
ARG IMAGE_NAME
|
||||
ARG IMAGE_VERSION
|
||||
FROM ${IMAGE_NAME}:${IMAGE_VERSION}
|
||||
|
||||
COPY conf.d/ /etc/nginx/conf.d/
|
||||
4
nginx/conf.d/proxy_timeout.conf
Normal file
4
nginx/conf.d/proxy_timeout.conf
Normal file
@ -0,0 +1,4 @@
|
||||
proxy_connect_timeout 300;
|
||||
proxy_send_timeout 300;
|
||||
proxy_read_timeout 300;
|
||||
send_timeout 300;
|
||||
1
nginx/conf.d/request_size.conf
Normal file
1
nginx/conf.d/request_size.conf
Normal file
@ -0,0 +1 @@
|
||||
client_max_body_size 2000m;
|
||||
58
nginx/run.sh
Executable file
58
nginx/run.sh
Executable file
@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
|
||||
|
||||
IMAGE_NAME="jwilder/nginx-proxy"
|
||||
IMAGE_VERSION="latest"
|
||||
|
||||
PROJECT_NAME=nginx-proxy
|
||||
|
||||
|
||||
source ${SCRIPT_PATH}/../common.shinc
|
||||
|
||||
#
|
||||
# Project specific variables
|
||||
#
|
||||
|
||||
init() {
|
||||
__init
|
||||
|
||||
NETWORKS=(${PROXY_NETWORK})
|
||||
__createNetworks
|
||||
|
||||
__build || return $?
|
||||
|
||||
# Create the nginx-proxy container
|
||||
docker create \
|
||||
--name ${PROJECT_NAME} \
|
||||
-v /var/run/docker.sock:/tmp/docker.sock:ro \
|
||||
--restart=unless-stopped \
|
||||
-p 80:80 \
|
||||
-p 443:443 \
|
||||
--net ${PROXY_NETWORK} \
|
||||
${PROJECT_NAME}:latest
|
||||
|
||||
[[ $? -ne 0 ]] && return 1
|
||||
|
||||
__ask_to_start
|
||||
}
|
||||
|
||||
fix() {
|
||||
local upperDir=$(docker inspect ${PROJECT_NAME} --format "{{.GraphDriver.Data.UpperDir}}")
|
||||
[[ $? -ne 0 ]] && __err "Could not determine the nginx proxy filesystem path" && return 2
|
||||
|
||||
stop
|
||||
sudo rm $(docker inspect ${PROJECT_NAME} --format "{{.GraphDriver.Data.UpperDir}}")/etc/nginx/conf.d/default.conf
|
||||
|
||||
if [[ $? -eq 0 ]]; then
|
||||
__success "Succesfully removed the nginx configuration, restart the container"
|
||||
return 0
|
||||
else
|
||||
__err "Could not remove the configuration file"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
"$@"
|
||||
|
||||
exit $?
|
||||
46
pgsql-db/run.sh
Executable file
46
pgsql-db/run.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
|
||||
|
||||
IMAGE_NAME="mdillon/postgis"
|
||||
IMAGE_VERSION="9.5"
|
||||
|
||||
PROJECT_NAME=pgsql-db
|
||||
|
||||
|
||||
source ${SCRIPT_PATH}/../common.shinc
|
||||
|
||||
#
|
||||
# Project specific variables
|
||||
#
|
||||
|
||||
DB_VOLUME=pgsql_persistent
|
||||
PORT=5432
|
||||
|
||||
init() {
|
||||
__init
|
||||
|
||||
NETWORKS=(${DB_NETWORK})
|
||||
__createNetworks
|
||||
|
||||
__msg "Removing old postgres bin volume..."
|
||||
docker volume rm -f ${PGSQL_DB_BIN} &&
|
||||
docker create \
|
||||
--name ${PROJECT_NAME} \
|
||||
--restart=unless-stopped \
|
||||
-v ${DB_VOLUME}:/var/lib/postgresql/data \
|
||||
-v ${PGSQL_DB_BIN}:/usr/lib/postgresql/${IMAGE_VERSION}/bin \
|
||||
-e POSTGRES_USER=${DB_USER} \
|
||||
-e POSTGRES_PASSWORD=${DB_PASSWORD} \
|
||||
--net ${DB_NETWORK} \
|
||||
-p ${PORT}:5432 \
|
||||
${IMAGE_NAME}:${IMAGE_VERSION}
|
||||
|
||||
[[ $? -ne 0 ]] && return 1
|
||||
|
||||
__ask_to_start
|
||||
}
|
||||
|
||||
"$@"
|
||||
|
||||
exit $?
|
||||
41
settings.shinc
Normal file
41
settings.shinc
Normal file
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#
|
||||
# Networks
|
||||
#
|
||||
|
||||
# Reverse proxy
|
||||
PROXY_NETWORK="web-server"
|
||||
|
||||
# Databases
|
||||
DB_NETWORK="database"
|
||||
|
||||
# Mail
|
||||
SMTP_NETWORK="smtp"
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Database settings
|
||||
#
|
||||
|
||||
DB_USER="root"
|
||||
DB_PASSWORD="megaheslo"
|
||||
|
||||
PGSQL_DB_BIN="postgres_bin_dir"
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Colors
|
||||
#
|
||||
|
||||
C_NONE="\033[0m" # Reset formating
|
||||
C_ERR="\033[41;1m" # Red
|
||||
C_WARN="\033[1;33m" # Yellow
|
||||
C_HIGHLIGHT="\033[1;95m" # Purple
|
||||
C_LOG="\033[1;3;36m" # Cyan
|
||||
C_GREEN="\033[32m"
|
||||
C_WHITE="\033[1;37m"
|
||||
Loading…
Reference in New Issue
Block a user