Compare commits

..

4 Commits

Author SHA1 Message Date
ac46887e75 Replace project name variable for service name 2018-01-04 06:58:48 +01:00
770aafa5ca Allow overriding individual service configuration 2018-01-04 06:58:01 +01:00
af6d1a3272 Add elastic search 2018-01-04 06:56:20 +01:00
17fd20d1ca Remove debugging 2018-01-04 06:50:35 +01:00
12 changed files with 116 additions and 41 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
env.shinc **/env.shinc

View File

@ -5,7 +5,7 @@ SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
IMAGE_NAME="clue/adminer" IMAGE_NAME="clue/adminer"
IMAGE_VERSION="latest" IMAGE_VERSION="latest"
PROJECT_NAME=adminer SERVICE_NAME=adminer
source ${SCRIPT_PATH}/../common.shinc source ${SCRIPT_PATH}/../common.shinc
@ -16,6 +16,9 @@ source ${SCRIPT_PATH}/../common.shinc
DOMAIN_NAME="adminer.loc" DOMAIN_NAME="adminer.loc"
source ${SCRIPT_PATH}/env.shinc 2> /dev/null
init() { init() {
__init __init
@ -25,26 +28,18 @@ init() {
__build || return $? __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 \ docker create \
--name ${PROJECT_NAME} \ --name ${SERVICE_NAME} \
-e VIRTUAL_HOST=${DOMAIN_NAME} \ -e VIRTUAL_HOST=${DOMAIN_NAME} \
--restart=unless-stopped \ --restart=unless-stopped \
${PROJECT_NAME}:latest ${SERVICE_NAME}:latest
[[ $? -ne 0 ]] && return 1 [[ $? -ne 0 ]] && return 1
docker network connect ${DB_NETWORK} ${PROJECT_NAME} docker network connect ${DB_NETWORK} ${SERVICE_NAME}
[[ $? -ne 0 ]] && return 1 [[ $? -ne 0 ]] && return 1
docker network connect ${PROXY_NETWORK} ${PROJECT_NAME} docker network connect ${PROXY_NETWORK} ${SERVICE_NAME}
[[ $? -ne 0 ]] && return 1 [[ $? -ne 0 ]] && return 1
__ask_to_start __ask_to_start

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
REQUIRED_VARIABLES=(PROJECT_NAME SCRIPT_PATH IMAGE_NAME IMAGE_VERSION) REQUIRED_VARIABLES=(SERVICE_NAME SCRIPT_PATH IMAGE_NAME IMAGE_VERSION)
for _var in ${REQUIRED_VARIABLES[@]}; do for _var in ${REQUIRED_VARIABLES[@]}; do
if [ -z ${!_var+x} ]; then if [ -z ${!_var+x} ]; then
@ -10,7 +10,7 @@ for _var in ${REQUIRED_VARIABLES[@]}; do
done done
source ${SCRIPT_PATH}/../settings.shinc source ${SCRIPT_PATH}/../settings.shinc
source ${SCRIPT_PATH}/../env.shinc source ${SCRIPT_PATH}/../env.shinc 2> /dev/null
source ${SCRIPT_PATH}/../functions.shinc source ${SCRIPT_PATH}/../functions.shinc
@ -21,7 +21,7 @@ source ${SCRIPT_PATH}/../functions.shinc
stop() { stop() {
__msg "Stopping container... " 0 no __msg "Stopping container... " 0 no
STATUS=$(docker stop ${PROJECT_NAME} > /dev/null 2>&1) STATUS=$(docker stop ${SERVICE_NAME} > /dev/null 2>&1)
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
__err "${STATUS}" __err "${STATUS}"
return 1 return 1
@ -34,7 +34,7 @@ stop() {
start() { start() {
__msg "Starting container... " 0 no __msg "Starting container... " 0 no
STATUS=$(docker start ${PROJECT_NAME} 2>&1) STATUS=$(docker start ${SERVICE_NAME} 2>&1)
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
__err "${STATUS}" __err "${STATUS}"
return 1 return 1
@ -49,7 +49,7 @@ remove() {
stop stop
__msg "Removing container... " 0 no __msg "Removing container... " 0 no
STATUS=$(docker rm ${PROJECT_NAME} 2>&1) STATUS=$(docker rm ${SERVICE_NAME} 2>&1)
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
__err "${STATUS}" __err "${STATUS}"
return 1 return 1
@ -62,23 +62,23 @@ remove() {
logs() { logs() {
docker logs "$@" ${PROJECT_NAME} docker logs "$@" ${SERVICE_NAME}
return $? return $?
} }
exec() { exec() {
# Test if bash is available # Test if bash is available
docker exec -it ${PROJECT_NAME} /bin/bash -c "echo 'test'" > /dev/null 2>&1 docker exec -it ${SERVICE_NAME} /bin/bash -c "echo 'test'" > /dev/null 2>&1
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
docker exec -it ${PROJECT_NAME} /bin/bash docker exec -it ${SERVICE_NAME} /bin/bash
return $? return $?
fi fi
# Test if bash is available # Test if bash is available
docker exec -it ${PROJECT_NAME} /bin/sh -c "echo 'test'" > /dev/null 2>&1 docker exec -it ${SERVICE_NAME} /bin/sh -c "echo 'test'" > /dev/null 2>&1
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
docker exec -it ${PROJECT_NAME} /bin/sh docker exec -it ${SERVICE_NAME} /bin/sh
return $? return $?
fi fi

11
elastic-search/Dockerfile Normal file
View File

@ -0,0 +1,11 @@
ARG IMAGE_NAME
ARG IMAGE_VERSION
FROM ${IMAGE_NAME}:${IMAGE_VERSION}
ADD elasticsearch.yml /usr/share/elasticsearch/config/
USER root
RUN chown elasticsearch:elasticsearch config/elasticsearch.yml
USER elasticsearch

View File

@ -0,0 +1,12 @@
http:
host: 0.0.0.0
transport:
host: 127.0.0.1
xpack:
security:
enabled: false
authc:
anonymous:
roles:
- role1
- role2

44
elastic-search/run.sh Executable file
View File

@ -0,0 +1,44 @@
#!/usr/bin/env bash
SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
IMAGE_NAME="docker.elastic.co/elasticsearch/elasticsearch"
IMAGE_VERSION="5.3.2"
SERVICE_NAME=elastic-search
source ${SCRIPT_PATH}/../common.shinc
#
# Project specific variables
#
DOMAIN_NAME="elastic.loc"
source ${SCRIPT_PATH}/env.shinc 2> /dev/null
init() {
__init
# Create networks
NETWORKS=(${SEARCH_ENGINE_NETWORK})
__createNetworks
__build || return $?
docker create \
--name ${SERVICE_NAME} \
-e VIRTUAL_HOST=${DOMAIN_NAME} \
--net ${SEARCH_ENGINE_NETWORK} \
${SERVICE_NAME}:latest
[[ $? -ne 0 ]] && return 1
__ask_to_start
}
"$@"
exit $?

View File

@ -76,7 +76,7 @@ init() {
} }
__init() { __init() {
__msg "Initializing ${PROJECT_NAME}" __msg "Initializing ${SERVICE_NAME}"
# Make sure we have the latest build # Make sure we have the latest build
docker pull ${IMAGE_NAME}:${IMAGE_VERSION} docker pull ${IMAGE_NAME}:${IMAGE_VERSION}
@ -88,7 +88,7 @@ __build() {
docker build \ docker build \
--build-arg IMAGE_NAME=${IMAGE_NAME} \ --build-arg IMAGE_NAME=${IMAGE_NAME} \
--build-arg IMAGE_VERSION=${IMAGE_VERSION} \ --build-arg IMAGE_VERSION=${IMAGE_VERSION} \
-t ${PROJECT_NAME}:latest \ -t ${SERVICE_NAME}:latest \
${SCRIPT_PATH} ${SCRIPT_PATH}
return $? return $?

View File

@ -5,7 +5,7 @@ SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
IMAGE_NAME="mailhog/mailhog" IMAGE_NAME="mailhog/mailhog"
IMAGE_VERSION="latest" IMAGE_VERSION="latest"
PROJECT_NAME=mailhog SERVICE_NAME=mailhog
source ${SCRIPT_PATH}/../common.shinc source ${SCRIPT_PATH}/../common.shinc
@ -18,6 +18,8 @@ SMTP_PORT=1025
WEB_PORT=8025 WEB_PORT=8025
DOMAIN_NAME="mailhog.loc" DOMAIN_NAME="mailhog.loc"
source ${SCRIPT_PATH}/env.shinc 2> /dev/null
init() { init() {
__init __init
@ -26,7 +28,7 @@ init() {
__createNetworks __createNetworks
docker create \ docker create \
--name ${PROJECT_NAME} \ --name ${SERVICE_NAME} \
-e VIRTUAL_HOST=${DOMAIN_NAME} \ -e VIRTUAL_HOST=${DOMAIN_NAME} \
-e VIRTUAL_PORT=${WEB_PORT} \ -e VIRTUAL_PORT=${WEB_PORT} \
-p ${SMTP_PORT}:1025 \ -p ${SMTP_PORT}:1025 \
@ -34,10 +36,10 @@ init() {
[[ $? -ne 0 ]] && return 1 [[ $? -ne 0 ]] && return 1
docker network connect ${SMTP_NETWORK} ${PROJECT_NAME} docker network connect ${SMTP_NETWORK} ${SERVICE_NAME}
[[ $? -ne 0 ]] && return 1 [[ $? -ne 0 ]] && return 1
docker network connect ${PROXY_NETWORK} ${PROJECT_NAME} docker network connect ${PROXY_NETWORK} ${SERVICE_NAME}
[[ $? -ne 0 ]] && return 1 [[ $? -ne 0 ]] && return 1
__ask_to_start __ask_to_start

View File

@ -5,7 +5,7 @@ SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
IMAGE_NAME="mariadb" IMAGE_NAME="mariadb"
IMAGE_VERSION="10.1" IMAGE_VERSION="10.1"
PROJECT_NAME=maria-db SERVICE_NAME=maria-db
source ${SCRIPT_PATH}/../common.shinc source ${SCRIPT_PATH}/../common.shinc
@ -17,6 +17,9 @@ source ${SCRIPT_PATH}/../common.shinc
DB_VOLUME=mariadb_shared DB_VOLUME=mariadb_shared
BACKUP_DIR=${SCRIPT_PATH}/backup BACKUP_DIR=${SCRIPT_PATH}/backup
source ${SCRIPT_PATH}/env.shinc 2> /dev/null
init() { init() {
__init __init
@ -26,7 +29,7 @@ init() {
# Create the database container # Create the database container
docker create \ docker create \
--name ${PROJECT_NAME} \ --name ${SERVICE_NAME} \
--restart=unless-stopped \ --restart=unless-stopped \
-v ${DB_VOLUME}:/var/lib/mysql \ -v ${DB_VOLUME}:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=${DB_PASSWORD} \ -e MYSQL_ROOT_PASSWORD=${DB_PASSWORD} \
@ -44,7 +47,7 @@ export() {
local user=$(id -u) local user=$(id -u)
mkdir -p ${BACKUP_DIR} && \ 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 docker run --rm --volumes-from ${SERVICE_NAME} -v ${BACKUP_DIR}:/backup busybox tar cvf /backup/backup.tar /var/lib/mysql && chown -R ${user}:${user} ./backup
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
__err "Could not create the backup" __err "Could not create the backup"
exit 2 exit 2
@ -58,7 +61,7 @@ export() {
# Used for importing the whole database filesystem # Used for importing the whole database filesystem
import() { import() {
stop 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 /" docker run --rm --volumes-from ${SERVICE_NAME} -v ${BACKUP_DIR}:/backup busybox sh -c "rm -rf /var/lib/mysql/* && tar xvf /backup/backup.tar --directory /"
start start
return $? return $?

View File

@ -5,7 +5,7 @@ SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
IMAGE_NAME="jwilder/nginx-proxy" IMAGE_NAME="jwilder/nginx-proxy"
IMAGE_VERSION="latest" IMAGE_VERSION="latest"
PROJECT_NAME=nginx-proxy SERVICE_NAME=nginx-proxy
source ${SCRIPT_PATH}/../common.shinc source ${SCRIPT_PATH}/../common.shinc
@ -14,6 +14,9 @@ source ${SCRIPT_PATH}/../common.shinc
# Project specific variables # Project specific variables
# #
source ${SCRIPT_PATH}/env.shinc 2> /dev/null
init() { init() {
__init __init
@ -24,13 +27,13 @@ init() {
# Create the nginx-proxy container # Create the nginx-proxy container
docker create \ docker create \
--name ${PROJECT_NAME} \ --name ${SERVICE_NAME} \
-v /var/run/docker.sock:/tmp/docker.sock:ro \ -v /var/run/docker.sock:/tmp/docker.sock:ro \
--restart=unless-stopped \ --restart=unless-stopped \
-p 80:80 \ -p 80:80 \
-p 443:443 \ -p 443:443 \
--net ${PROXY_NETWORK} \ --net ${PROXY_NETWORK} \
${PROJECT_NAME}:latest ${SERVICE_NAME}:latest
[[ $? -ne 0 ]] && return 1 [[ $? -ne 0 ]] && return 1
@ -38,11 +41,11 @@ init() {
} }
fix() { fix() {
local upperDir=$(docker inspect ${PROJECT_NAME} --format "{{.GraphDriver.Data.UpperDir}}") local upperDir=$(docker inspect ${SERVICE_NAME} --format "{{.GraphDriver.Data.UpperDir}}")
[[ $? -ne 0 ]] && __err "Could not determine the nginx proxy filesystem path" && return 2 [[ $? -ne 0 ]] && __err "Could not determine the nginx proxy filesystem path" && return 2
stop stop
sudo rm $(docker inspect ${PROJECT_NAME} --format "{{.GraphDriver.Data.UpperDir}}")/etc/nginx/conf.d/default.conf sudo rm $(docker inspect ${SERVICE_NAME} --format "{{.GraphDriver.Data.UpperDir}}")/etc/nginx/conf.d/default.conf
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
__success "Succesfully removed the nginx configuration, restart the container" __success "Succesfully removed the nginx configuration, restart the container"

View File

@ -5,7 +5,7 @@ SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
IMAGE_NAME="mdillon/postgis" IMAGE_NAME="mdillon/postgis"
IMAGE_VERSION="9.5" IMAGE_VERSION="9.5"
PROJECT_NAME=pgsql-db SERVICE_NAME=pgsql-db
source ${SCRIPT_PATH}/../common.shinc source ${SCRIPT_PATH}/../common.shinc
@ -17,6 +17,9 @@ source ${SCRIPT_PATH}/../common.shinc
DB_VOLUME=pgsql_persistent DB_VOLUME=pgsql_persistent
PORT=5432 PORT=5432
source ${SCRIPT_PATH}/env.shinc 2> /dev/null
init() { init() {
__init __init
@ -26,7 +29,7 @@ init() {
__msg "Removing old postgres bin volume..." __msg "Removing old postgres bin volume..."
docker volume rm -f ${PGSQL_DB_BIN} && docker volume rm -f ${PGSQL_DB_BIN} &&
docker create \ docker create \
--name ${PROJECT_NAME} \ --name ${SERVICE_NAME} \
--restart=unless-stopped \ --restart=unless-stopped \
-v ${DB_VOLUME}:/var/lib/postgresql/data \ -v ${DB_VOLUME}:/var/lib/postgresql/data \
-v ${PGSQL_DB_BIN}:/usr/lib/postgresql/${IMAGE_VERSION}/bin \ -v ${PGSQL_DB_BIN}:/usr/lib/postgresql/${IMAGE_VERSION}/bin \

View File

@ -16,6 +16,8 @@ DB_NETWORK="database"
# Mail # Mail
SMTP_NETWORK="smtp" SMTP_NETWORK="smtp"
# Elastic search
SEARCH_ENGINE_NETWORK="elastic"