1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
=== Dockerizing the Exchange/Merchant ===
This section shows how to run a "dockerized" exchange/merchant.
The exchange uses postgresql (container) and is served
by nginx (container). The merchant instead depends on exchange
(container) and postgresql (container).
The docker's tools needed are: docker, docker-compose, docker-machine.
Please refer to Docker's official documentation for their installation
instructions.
Before starting to build the exchange/merchant's image, make sure a
docker-machine instance is up and running.
1. Build the images.
<COMPONENT> is either 'exchange' or 'merchant', depending on what is
to be built.
From <THIS_REPO/docker/<COMPONENT>, give:
# NOTE for 'merchant' build: as default, the merchant is configured
# to work with the 'demo' exchange running at exchange.demo.taler.net.
# Nonetheless, edit (before building) the files
# <THIS_REPO>/docker/merchant/exchange_{pub,url}.txt, in case the merchant
# needs to work with any other exchange.
$ docker-compose build
2. Launch the service.
The following command launches the <COMPONENT> and all other services
it depends on. From the same directory as the previous step, issue:
$ docker-compose up
If everything worked as expected, you should see some live logging
from all the containers.
(Errors about existing roles/databases can be ignored.)
3. Test
Issue the following command to see if the <COMPONENT> has been
correctly installed and launched.
# Some 'greeting' message should be returned. Note, the
# service runs on port 80.
$ curl http://`docker-machine ip`/
=== How to use these images ===
This section explains how to (1) build and (2) run individual
images -- that is often not useful to run services, as they need
to be "composed" in order to work properly.
(1) is done by:
$ docker build -t taler/base <THIS_REPO>/docker/base/
$ docker build -t taler/exchange <THIS_REPO>/docker/exchange/
Note that the value passed to option -t is completely arbitrary.
(2) is done by:
$ docker run -it taler/exchange
=== How to destroy them ===
Consider also the --no-cache option to force a rebuild.
$ docker build --no-cache <THIS_REPO>/docker/base
1. Stop all containers:
$ docker stop $(docker ps -a -q)
2. If necessary, remove all containers:
$ docker rm $(docker ps -a -q)
3. Remove images:
$ docker rmi -f $(docker images -q)
NOTE: for tripwire users, those commands are all defined
as aliases.
|