Add docker-compose file for dev environment
This commit is contained in:
parent
a11d573ff1
commit
b33294eec3
3 changed files with 82 additions and 0 deletions
65
README.md
65
README.md
|
@ -11,3 +11,68 @@ This is the Haskell MongoDB driver (client). [MongoDB](http://www.mongodb.org) i
|
|||
* [MapReduce example](http://github.com/mongodb-haskell/mongodb/blob/master/doc/map-reduce-example.md)
|
||||
* [Driver design](https://github.com/mongodb-haskell/mongodb/blob/master/doc/Article1.md)
|
||||
* [MongoDB DBMS](http://www.mongodb.org)
|
||||
|
||||
### Dev Environment
|
||||
|
||||
It's important for this library to be tested with various versions of mongodb
|
||||
server and with different ghc versions. In order to achieve this we use docker
|
||||
containers and docker-compose. This repository contains two files: docker-compose.yml
|
||||
and reattach.sh.
|
||||
|
||||
Docker compose file describes two containers.
|
||||
|
||||
One container is for running mongodb server. If you want a different version of
|
||||
mongodb server you need to change the tag of mongo image in the
|
||||
docker-compose.yml. In order to start your mongodb server you need to run:
|
||||
|
||||
```
|
||||
docker-compose up -d mongodb
|
||||
```
|
||||
|
||||
In order to stop your containers without loosing the data inside of it:
|
||||
|
||||
```
|
||||
docker-compose stop mongodb
|
||||
```
|
||||
|
||||
Restart:
|
||||
|
||||
```
|
||||
docker-compose start mongodb
|
||||
```
|
||||
|
||||
If you want to remove the mongodb container and start from scratch then:
|
||||
|
||||
```
|
||||
docker-compose stop mongodb
|
||||
docker-compose rm mongodb
|
||||
docker-compose up -d mongodb
|
||||
```
|
||||
|
||||
The other container is for compiling your code. By specifying the tag of the image
|
||||
you can change the version of ghc you will be using. If you never started this
|
||||
container then you need:
|
||||
|
||||
```
|
||||
docker-compose run mongodb-haskell
|
||||
```
|
||||
|
||||
It will start the container and mount your working directory to
|
||||
`/opt/mongodb-haskell` If you exit the bash cli then the conainer will stop.
|
||||
In order to reattach to an old stopped container you need to run script
|
||||
`reattach.sh`. If you run `docker-compose run` again it will create another
|
||||
container and all work made by cabal will be lost. `reattach.sh` is a
|
||||
workaround for docker-compose's inability to pick up containers that exited.
|
||||
|
||||
When you are done with testing you need to run:
|
||||
```
|
||||
docker-compose stop mongodb
|
||||
```
|
||||
|
||||
Next time you will need to do:
|
||||
```
|
||||
docker-compose start mongodb
|
||||
reattach.sh
|
||||
```
|
||||
It will start your stopped container with mongodb server and pick up the stopped
|
||||
container with haskell.
|
||||
|
|
14
docker-compose.yml
Normal file
14
docker-compose.yml
Normal file
|
@ -0,0 +1,14 @@
|
|||
version: '3'
|
||||
services:
|
||||
mongodb:
|
||||
image: mongo:3.4.3
|
||||
mongodb-haskell:
|
||||
image: phadej/ghc:8.0.2
|
||||
environment:
|
||||
- HASKELL_MONGODB_TEST_HOST=mongodb
|
||||
entrypoint:
|
||||
- /bin/bash
|
||||
volumes:
|
||||
- ./:/opt/mongodb-haskell
|
||||
|
||||
# vim: ts=2 et sw=2 ai
|
3
reattach.sh
Executable file
3
reattach.sh
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker start -ai mongodb_mongodb-haskell_run_1
|
Loading…
Reference in a new issue