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

View File

@ -1,6 +1,6 @@
#!/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
if [ -z ${!_var+x} ]; then
@ -10,7 +10,7 @@ for _var in ${REQUIRED_VARIABLES[@]}; do
done
source ${SCRIPT_PATH}/../settings.shinc
source ${SCRIPT_PATH}/../env.shinc
source ${SCRIPT_PATH}/../env.shinc 2> /dev/null
source ${SCRIPT_PATH}/../functions.shinc
@ -21,7 +21,7 @@ source ${SCRIPT_PATH}/../functions.shinc
stop() {
__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
__err "${STATUS}"
return 1
@ -34,7 +34,7 @@ stop() {
start() {
__msg "Starting container... " 0 no
STATUS=$(docker start ${PROJECT_NAME} 2>&1)
STATUS=$(docker start ${SERVICE_NAME} 2>&1)
if [[ $? -ne 0 ]]; then
__err "${STATUS}"
return 1
@ -49,7 +49,7 @@ remove() {
stop
__msg "Removing container... " 0 no
STATUS=$(docker rm ${PROJECT_NAME} 2>&1)
STATUS=$(docker rm ${SERVICE_NAME} 2>&1)
if [[ $? -ne 0 ]]; then
__err "${STATUS}"
return 1
@ -62,23 +62,23 @@ remove() {
logs() {
docker logs "$@" ${PROJECT_NAME}
docker logs "$@" ${SERVICE_NAME}
return $?
}
exec() {
# 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
docker exec -it ${PROJECT_NAME} /bin/bash
docker exec -it ${SERVICE_NAME} /bin/bash
return $?
fi
# 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
docker exec -it ${PROJECT_NAME} /bin/sh
docker exec -it ${SERVICE_NAME} /bin/sh
return $?
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() {
__msg "Initializing ${PROJECT_NAME}"
__msg "Initializing ${SERVICE_NAME}"
# Make sure we have the latest build
docker pull ${IMAGE_NAME}:${IMAGE_VERSION}
@ -88,7 +88,7 @@ __build() {
docker build \
--build-arg IMAGE_NAME=${IMAGE_NAME} \
--build-arg IMAGE_VERSION=${IMAGE_VERSION} \
-t ${PROJECT_NAME}:latest \
-t ${SERVICE_NAME}:latest \
${SCRIPT_PATH}
return $?

View File

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

View File

@ -5,7 +5,7 @@ SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
IMAGE_NAME="mariadb"
IMAGE_VERSION="10.1"
PROJECT_NAME=maria-db
SERVICE_NAME=maria-db
source ${SCRIPT_PATH}/../common.shinc
@ -17,6 +17,9 @@ source ${SCRIPT_PATH}/../common.shinc
DB_VOLUME=mariadb_shared
BACKUP_DIR=${SCRIPT_PATH}/backup
source ${SCRIPT_PATH}/env.shinc 2> /dev/null
init() {
__init
@ -26,7 +29,7 @@ init() {
# Create the database container
docker create \
--name ${PROJECT_NAME} \
--name ${SERVICE_NAME} \
--restart=unless-stopped \
-v ${DB_VOLUME}:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=${DB_PASSWORD} \
@ -44,7 +47,7 @@ export() {
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
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
__err "Could not create the backup"
exit 2
@ -58,7 +61,7 @@ export() {
# 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 /"
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
return $?

View File

@ -5,7 +5,7 @@ SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
IMAGE_NAME="jwilder/nginx-proxy"
IMAGE_VERSION="latest"
PROJECT_NAME=nginx-proxy
SERVICE_NAME=nginx-proxy
source ${SCRIPT_PATH}/../common.shinc
@ -14,6 +14,9 @@ source ${SCRIPT_PATH}/../common.shinc
# Project specific variables
#
source ${SCRIPT_PATH}/env.shinc 2> /dev/null
init() {
__init
@ -24,13 +27,13 @@ init() {
# Create the nginx-proxy container
docker create \
--name ${PROJECT_NAME} \
--name ${SERVICE_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
${SERVICE_NAME}:latest
[[ $? -ne 0 ]] && return 1
@ -38,11 +41,11 @@ init() {
}
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
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
__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_VERSION="9.5"
PROJECT_NAME=pgsql-db
SERVICE_NAME=pgsql-db
source ${SCRIPT_PATH}/../common.shinc
@ -17,6 +17,9 @@ source ${SCRIPT_PATH}/../common.shinc
DB_VOLUME=pgsql_persistent
PORT=5432
source ${SCRIPT_PATH}/env.shinc 2> /dev/null
init() {
__init
@ -26,7 +29,7 @@ init() {
__msg "Removing old postgres bin volume..."
docker volume rm -f ${PGSQL_DB_BIN} &&
docker create \
--name ${PROJECT_NAME} \
--name ${SERVICE_NAME} \
--restart=unless-stopped \
-v ${DB_VOLUME}:/var/lib/postgresql/data \
-v ${PGSQL_DB_BIN}:/usr/lib/postgresql/${IMAGE_VERSION}/bin \

View File

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