|
@ -0,0 +1,51 @@ |
|
|
|
|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
## Init is run on host |
|
|
|
|
|
## For now it is run every time the script is launched, but |
|
|
|
|
|
## it should be launched only once after build. |
|
|
|
|
|
|
|
|
|
|
|
## Accessible variables are: |
|
|
|
|
|
## - SERVICE_NAME Name of current service |
|
|
|
|
|
## - DOCKER_BASE_IMAGE Base image from which this service might be built if any |
|
|
|
|
|
## - SERVICE_DATASTORE Location on host of the DATASTORE of this service |
|
|
|
|
|
## - SERVICE_CONFIGSTORE Location on host of the CONFIGSTORE of this service |
|
|
|
|
|
|
|
|
|
|
|
. lib/common |
|
|
|
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
|
|
|
|
|
|
uid=$(docker_get_uid "$SERVICE_NAME" "mongodb") |
|
|
|
|
|
|
|
|
|
|
|
CONFIG=$SERVICE_CONFIGSTORE/etc/mongod.conf |
|
|
|
|
|
|
|
|
|
|
|
mkdir -p "$(dirname "$CONFIG")" |
|
|
|
|
|
## XXXvlab: replication here is hardwired and not handled at all |
|
|
|
|
|
cat <<EOF > "$CONFIG" |
|
|
|
|
|
storage: |
|
|
|
|
|
dbPath: /var/lib/mongodb |
|
|
|
|
|
net: |
|
|
|
|
|
bindIp: 0.0.0.0 |
|
|
|
|
|
replication: |
|
|
|
|
|
oplogSizeMB: 128 |
|
|
|
|
|
replSetName: rs01 |
|
|
|
|
|
EOF |
|
|
|
|
|
chown -v "$uid" "$CONFIG" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dirs=(/var/{log,lib}/mongodb ) |
|
|
|
|
|
host_dirs=() |
|
|
|
|
|
for dir in "${dirs[@]}"; do |
|
|
|
|
|
host_dirs+=("$SERVICE_DATASTORE$dir") |
|
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
|
|
mkdir -p "${host_dirs[@]}" |
|
|
|
|
|
find "${host_dirs[@]}" \! -user "$uid" \ |
|
|
|
|
|
-exec chown -v "$uid" {} + || true |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
config_hash=$(cat "$CONFIG" | md5_compat) || exit 1 |
|
|
|
|
|
init-config-add " |
|
|
|
|
|
$MASTER_BASE_SERVICE_NAME: |
|
|
|
|
|
labels: |
|
|
|
|
|
- compose.config_hash=$config_hash |
|
|
|
|
|
" |