automated mongodb + mongo-express deployment with user creation
This commit is contained in:
parent
49e45900c4
commit
d8fd3ad30b
6
Makefile
6
Makefile
|
@ -15,8 +15,10 @@ OUTPUT = "file"
|
|||
OUTDIR = "/home/voje/workdir/test_out"
|
||||
DBADDR = ""
|
||||
|
||||
DB_ADM_USER = testuser
|
||||
DB_ADM_PASS = testpass
|
||||
DB_ADM_USER = testadmin
|
||||
DB_ADM_PASS = testadminpass
|
||||
DB_USR_USER = testuser
|
||||
DB_USR_PASS = testuserpass
|
||||
export
|
||||
|
||||
.PHONY: dev-env preflight
|
||||
|
|
5
dockerfiles/database/Dockerfile
Normal file
5
dockerfiles/database/Dockerfile
Normal file
|
@ -0,0 +1,5 @@
|
|||
FROM mongo:latest
|
||||
|
||||
WORKDIR /
|
||||
COPY init_inside_container.sh /.
|
||||
COPY create.js /.
|
|
@ -4,20 +4,31 @@
|
|||
|
||||
# mongo admin -u root -p password --eval "db.getSiblingDB('vlDB').addUser('vluser', 'password')"
|
||||
|
||||
.PHONY: start_db
|
||||
|
||||
STACKNAME = dbstack
|
||||
|
||||
all: run_stack create_users
|
||||
.PHONY: start_db FORCE
|
||||
|
||||
all: build_mongo run_stack create_users
|
||||
|
||||
info:
|
||||
echo "[*] RUN THIS A FEW TIMES (THE STACK NEEDS TIME TO CLEAN UP AND TO SPIN UP THE NODES)"
|
||||
|
||||
create.js: FORCE
|
||||
|
||||
FORCE:
|
||||
echo 'db.auth("$(DB_ADM_USER)", "$(DB_ADM_PASS)")' > create.js
|
||||
echo 'use valdb' >> create.js
|
||||
echo 'db.createUser({user: "$(DB_USR_USER)", pwd: "$(DB_USR_PASS)", roles: ["readWrite"]})' >> create.js
|
||||
|
||||
build_mongo: create.js
|
||||
docker build . -t my-mongo --no-cache
|
||||
|
||||
clean_stack:
|
||||
docker stack rm $(STACKNAME)
|
||||
|
||||
run_stack:
|
||||
docker stack deploy --compose-file mongodb-stack.yml $(STACKNAME)
|
||||
|
||||
create.js:
|
||||
echo -e 'db.auth("$(DB_ADM_USER)", "$(DB_ADM_PASS)")\n \
|
||||
use valdb\n \
|
||||
db.createUser({user: "kristjan", pwd: "password", roles: ["readWrite"]})' > create.js
|
||||
|
||||
create_users: create.js
|
||||
docker exec $(shell ./get_container_name.sh) mongo admin < create.js
|
||||
docker exec $(shell ./get_container_name.sh) /init_inside_container.sh
|
||||
# rm create.js
|
||||
|
|
3
dockerfiles/database/README.md
Normal file
3
dockerfiles/database/README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Some caveats
|
||||
* Access mongo-express using `0.0.0.0:8087` instead of `localhost:...`.
|
||||
* Run make from the root Makefile `make database`. You might need to run it several times (wait for conatiners to come up, etc.).
|
|
@ -1,5 +1,3 @@
|
|||
db.auth("testuser", "testpass")
|
||||
\
|
||||
use valdb
|
||||
\
|
||||
db.createUser({user: "kristjan", pwd: "password", roles: ["readWrite"]})
|
||||
db.auth("testadmin", "testadminpass")
|
||||
use valdb
|
||||
db.createUser({user: "testuser", pwd: "testuserpass", roles: ["readWrite"]})
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
#!/bin/bash
|
||||
docker ps | grep mongo:latest | awk '{print $1}'
|
||||
docker ps | grep my-mongo | awk '{print $1}'
|
||||
|
|
3
dockerfiles/database/init_inside_container.sh
Executable file
3
dockerfiles/database/init_inside_container.sh
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
mongo admin < /create.js
|
|
@ -2,8 +2,8 @@ version: '3.1'
|
|||
|
||||
services:
|
||||
|
||||
mongo:
|
||||
image: mongo
|
||||
my-mongo:
|
||||
image: my-mongo
|
||||
restart: always
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: ${DB_ADM_USER}
|
||||
|
@ -13,7 +13,8 @@ services:
|
|||
image: mongo-express
|
||||
restart: always
|
||||
ports:
|
||||
- 8081:8081
|
||||
- 8087:8081
|
||||
environment:
|
||||
ME_CONFIG_MONGODB_ADMINUSERNAME: ${DB_ADM_USER}
|
||||
ME_CONFIG_MONGODB_ADMINPASSWORD: ${DB_ADM_PASS}
|
||||
ME_CONFIG_MONGODB_SERVER: my-mongo
|
||||
|
|
Loading…
Reference in New Issue
Block a user