Dockerfile examples that can be reused for whatever you want.
Script env.sh reads config.yaml, so you don't need to update this script if you want to change something or to add new Docker image. Usage info:
USAGE: ./env.sh option key
Options:
start
stop
restart
build
rebuild
kill
rm
rmi
Keys from config.yaml:
wp
jenkins
redis
mongo
rails
ssg
ghost
hipache
abh-jmeter
NOTE: Images values in config.yaml needs to match directory name where Dockerfile is located.
Tested on Ubuntu 12.04.4
Insted of building images on your machine you can get them from trusted image repository on public docker index: https://index.docker.io/u/komljen/
If you skip build part with env.sh script, images will be automatically pulled from docker index.
|-- ubuntu:precise
|-- komljen/ubuntu
|-- komljen/redis
|-- komljen/apache
| |-- komljen/php-apache
| |-- komljen/wordpress
|-- komljen/nodejs
| |-- komljen/ghost
| |-- komljen/hipache
|-- komljen/postgres
|-- komljen/mysql
|-- komljen/mongo
|-- komljen/jdk6-oracle
| |-- komljen/tomcat
| |-- komljen/jenkins
| |-- komljen/maven3
| |-- komljen/jmeter-2.9-abh
|-- komljen/ruby
| |-- komljen/ruby-rails
| |-- komljen/ssg
| |-- komljen/rails-sample-app
Docker 0.9 and above. Installation on Ubuntu 12.04.4:
wget -qO- https://get.docker.io/gpg | apt-key add -
echo "deb http://get.docker.io/ubuntu docker main" > /etc/apt/sources.list.d/docker.list
apt-get update
apt-get -y install lxc-docker
Shyaml shell yaml parser:
apt-get -y install python-pip && pip install shyaml
When all is ready clone this git repository:
git clone https://github.com/komljen/docker.git && cd docker
Requirements to run docker on Mac OSX:
- VirtualBox
- brew
Install and run boot2docker:
brew install boot2docker
boot2docker init
boot2docker up
Export DOCKER_HOST variable and test if docker client is connected to server:
export DOCKER_HOST=tcp://localhost:4243
docker ps
Tools required for my env.sh script:
brew install python
brew install libyaml
pip install shyaml
Port forwarding example from 192.168.100.100:8080 on host to port 80 inside boot2docker-vm:
VBoxManage modifyvm boot2docker-vm --natpf1 "web,tcp,192.168.100.100,8080,,80"
When all is ready clone this git repository:
git clone https://github.com/komljen/docker.git && cd docker
To build WordPress images run ( https://github.com/komljen/docker#trusted-images ):
./env.sh build wp
This command will build all images from config.yaml (wp.images) needed by WordPress.
To start WordPress:
./env.sh start wp
This command will search for dependencies (wp.links) and start them first if they are present. Then it will run new container which will be linked to dependencies. Also it will read port (wp.service.port) and name (wp.service.name).
WordPress installation will be available at: http://localhost
Also thanks to Docker VOLUMES you can access to Apache root directory (/var/www) or to MySQL from new container:
docker run -i -t --volumes-from wordpress --link mysql:mysql komljen/wordpress /bin/bash
To access to MySQL database from container:
mysql -h $MYSQL_PORT_3306_TCP_ADDR -u $WP_USER -p$WP_PASS
To build Hipache images run ( https://github.com/komljen/docker#trusted-images ):
./env.sh build hipache
To start Hipache:
./env.sh start hipache
Updating redis configuration from new container:
docker run -t -rm --link redis:redis komljen/redis /bin/bash -c \
'redis-cli -h $REDIS_PORT_6379_TCP_ADDR rpush frontend:www.dotcloud.com mywebsite'
To build Ghost images run ( https://github.com/komljen/docker#trusted-images ):
./env.sh build ghost
To start Ghost:
./env.sh start ghost