Skip to content

Instantly share code, notes, and snippets.

@litvil
Created May 2, 2017 19:58
Show Gist options
  • Save litvil/d6f0803d2410eac16f3fa94f55d9aea1 to your computer and use it in GitHub Desktop.
Save litvil/d6f0803d2410eac16f3fa94f55d9aea1 to your computer and use it in GitHub Desktop.
Databases with Vagrant in Docker containers
which docker &>/dev/null
if [ $? -eq 1 ]; then
sudo apt-get update
sudo apt-get install -y htop vim screen tmux wget curl
sudo wget -qO- https://get.docker.com/ | sh
sudo usermod -a -G docker vagrant
fi
(cd /vagrant && sudo make run)
DB_USERNAME ?= dbuser
DB_PASSWORD ?= dbpass
BIND_HOST ?= 0.0.0.0
POSTGRESQL_IMAGE ?= postgres:9.6
POSTGRESQL_CONTAINER ?= upper-postgresql
POSTGRESQL_PORT ?= 5432
MYSQL_IMAGE ?= mysql:5.7
MYSQL_CONTAINER ?= upper-mysql
MYSQL_PORT ?= 3306
MYSQL55_IMAGE ?= mysql:5.5
MYSQL55_CONTAINER ?= upper-mysql-5.5
MYSQL55_PORT ?= 3355
MARIADB_IMAGE ?= mariadb:10.1
MARIADB_CONTAINER ?= upper-mariadb
MARIADB_PORT ?= 13306
MARIADB55_IMAGE ?= mariadb:5.5
MARIADB55_CONTAINER ?= upper-mariadb-5.5
MARIADB55_PORT ?= 13355
MONGO_IMAGE ?= mongo:3.0
MONGO_CONTAINER ?= upper-mongo
MONGO_PORT ?= 27017
MSSQL_IMAGE ?= microsoft/mssql-server-linux:ctp1-4
MSSQL_CONTAINER ?= upper-mssql
MSSQL_PORT ?= 1433
run:
$(MAKE) mysql & \
$(MAKE) postgresql & \
$(MAKE) mongo & \
$(MAKE) mssql & \
wait && \
docker ps -a
mongo:
docker pull $(MONGO_IMAGE) && \
(docker stop $(MONGO_CONTAINER) || exit 0) && \
(docker rm $(MONGO_CONTAINER) || exit 0) && \
docker run \
-d \
--restart=always \
-e "MONGO_USER=$(DB_USERNAME)" -e "MONGO_PASSWORD=$(DB_PASSWORD)" -e "MONGO_DATABASE=$(DB_USERNAME)" \
-p $(BIND_HOST):$(MONGO_PORT):27017 --name $(MONGO_CONTAINER) $(MONGO_IMAGE)
mariadb-5.5:
docker pull $(MARIADB55_IMAGE) && \
(docker stop $(MARIADB55_CONTAINER) || exit 0) && \
(docker rm $(MARIADB55_CONTAINER) || exit 0) && \
docker run \
-d \
--restart=always \
-e "MARIADB_USER=$(DB_USERNAME)" -e "MYSQL_PASSWORD=$(DB_PASSWORD)" -e "MYSQL_ALLOW_EMPTY_PASSWORD=1" -e "MYSQL_DATABASE=$(DB_USERNAME)" \
-p $(BIND_HOST):$(MARIADB55_PORT):3306 --name $(MARIADB55_CONTAINER) $(MARIADB55_IMAGE)
mariadb:
docker pull $(MARIADB_IMAGE) && \
(docker stop $(MARIADB_CONTAINER) || exit 0) && \
(docker rm $(MARIADB_CONTAINER) || exit 0) && \
docker run \
-d \
--restart=always \
-e "MARIADB_USER=$(DB_USERNAME)" -e "MYSQL_PASSWORD=$(DB_PASSWORD)" -e "MYSQL_ALLOW_EMPTY_PASSWORD=1" -e "MYSQL_DATABASE=$(DB_USERNAME)" \
-p $(BIND_HOST):$(MARIADB_PORT):3306 --name $(MARIADB_CONTAINER) $(MARIADB_IMAGE)
mysql:
docker pull $(MYSQL_IMAGE) && \
(docker stop $(MYSQL_CONTAINER) || exit 0) && \
(docker rm $(MYSQL_CONTAINER) || exit 0) && \
docker run \
-d \
--restart=always \
-e "MYSQL_USER=$(DB_USERNAME)" -e "MYSQL_PASSWORD=$(DB_PASSWORD)" -e "MYSQL_ALLOW_EMPTY_PASSWORD=1" -e "MYSQL_DATABASE=$(DB_USERNAME)" \
-p $(BIND_HOST):$(MYSQL_PORT):3306 --name $(MYSQL_CONTAINER) $(MYSQL_IMAGE)
mysql-5.5:
docker pull $(MYSQL55_IMAGE) && \
(docker stop $(MYSQL55_CONTAINER) || exit 0) && \
(docker rm $(MYSQL55_CONTAINER) || exit 0) && \
docker run \
-d \
--restart=always \
-e "MYSQL_USER=$(DB_USERNAME)" -e "MYSQL_PASSWORD=$(DB_PASSWORD)" -e "MYSQL_ALLOW_EMPTY_PASSWORD=1" -e "MYSQL_DATABASE=$(DB_USERNAME)" \
-p $(BIND_HOST):$(MYSQL55_PORT):3306 --name $(MYSQL55_CONTAINER) $(MYSQL55_IMAGE)
mssql:
docker pull $(MSSQL_IMAGE) && \
(docker stop $(MSSQL_CONTAINER) || exit 0) && \
(docker rm $(MSSQL_CONTAINER) || exit 0) && \
docker run \
-d \
--restart=always \
-e "ACCEPT_EULA=Y" \
-e 'SA_PASSWORD=my$$Password' \
-p $(BIND_HOST):$(MSSQL_PORT):1433 --name $(MSSQL_CONTAINER) $(MSSQL_IMAGE)
postgresql:
docker pull $(POSTGRESQL_IMAGE) && \
(docker stop $(POSTGRESQL_CONTAINER) || exit 0) && \
(docker rm $(POSTGRESQL_CONTAINER) || exit 0) && \
docker run \
-d \
--restart=always \
-e "POSTGRES_USER=$(DB_USERNAME)" -e "POSTGRES_PASSWORD=$(DB_PASSWORD)" \
-p $(BIND_HOST):$(POSTGRESQL_PORT):5432 --name $(POSTGRESQL_CONTAINER) $(POSTGRESQL_IMAGE)
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "phusion/ubuntu-14.04-amd64"
config.vm.hostname = "db.dev"
config.vm.network :private_network, ip: "192.168.36.10"
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off"]
end
config.ssh.username = "vagrant"
config.ssh.forward_agent = true
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment