mirror of
https://github.com/aljazceru/btcpayserver-docker.git
synced 2025-12-18 21:44:22 +01:00
Remove legacy docker-compose.yml, auto generate the Test docker-compose
This commit is contained in:
@@ -12,9 +12,9 @@ As you can see, it depends on several piece of infrastructure, mainly:
|
||||
|
||||
Setting up the dependencies might be time consuming, this repository is meant to give working example of `docker-compose` file which will setup everything for you.
|
||||
|
||||
The [Regtest](Regtest) `docker-compose` can be used for local testing.
|
||||
The [Test](Test) `docker-compose` are used for local testing.
|
||||
|
||||
The [Production](Production) `docker-compose` is used for production environment. It is using NGinx as a reverse proxy and [Let's Encrypt and DockerGen](https://github.com/gilyes/docker-nginx-letsencrypt-sample) to automatically configured HTTPS.
|
||||
The [Production](Production) `docker-compose` are used for production environment. It adds NGinx as a reverse proxy and [Let's Encrypt and DockerGen](https://github.com/gilyes/docker-nginx-letsencrypt-sample) to automatically configure HTTPS.
|
||||
|
||||
The production `docker-compose` is used under the hood to deploy an instance of BTCPay on Microsoft Azure in one click:
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
# About this docker-compose
|
||||
|
||||
This `docker-compose` shows how to configure postgres, bitcoind, NBXplorer and BTCPay on regtest.
|
||||
|
||||

|
||||
|
||||
It exposes BTCPay on the host address http://localhost:8080/.
|
||||
|
||||
If you need to access bitcoind RPC, you can use bitcoin-cli inside the container:
|
||||
|
||||
On Powershell:
|
||||
```
|
||||
.\docker-bitcoin-cli getblockcount
|
||||
```
|
||||
|
||||
On Linux:
|
||||
```
|
||||
docker exec -ti btcpayserver_regtest_bitcoind bitcoin-cli -regtest -conf="/data/bitcoin.conf" -datadir="/data" getblockcount
|
||||
```
|
||||
@@ -1 +0,0 @@
|
||||
docker exec -ti btcpayserver_regtest_bitcoind bitcoin-cli -regtest -conf="/data/bitcoin.conf" -datadir="/data" $args
|
||||
@@ -1,45 +0,0 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
|
||||
btcpayserver:
|
||||
image: nicolasdorier/btcpayserver:1.0.1.53
|
||||
ports:
|
||||
- 8080:49392
|
||||
expose:
|
||||
- "49392"
|
||||
environment:
|
||||
BTCPAY_POSTGRES: "User ID=postgres;Host=postgres;Port=5432;Database=btcpayserver"
|
||||
BTCPAY_NETWORK: regtest
|
||||
BTCPAY_EXPLORERURL: http://nbxplorer:32838/
|
||||
BTCPAY_BIND: 0.0.0.0:49392
|
||||
links:
|
||||
- nbxplorer
|
||||
- postgres
|
||||
|
||||
nbxplorer:
|
||||
image: nicolasdorier/nbxplorer:1.0.1.23
|
||||
expose:
|
||||
- "32838"
|
||||
environment:
|
||||
NBXPLORER_NETWORK: regtest
|
||||
NBXPLORER_RPCURL: http://bitcoind:43782/
|
||||
NBXPLORER_RPCUSER: ceiwHEbqWI83
|
||||
NBXPLORER_RPCPASSWORD: DwubwWsoo3
|
||||
NBXPLORER_NODEENDPOINT: bitcoind:8332
|
||||
NBXPLORER_BIND: 0.0.0.0:32838
|
||||
NBXPLORER_NOAUTH: 1
|
||||
links:
|
||||
- bitcoind
|
||||
|
||||
bitcoind:
|
||||
container_name: btcpayserver_regtest_bitcoind
|
||||
image: nicolasdorier/docker-bitcoin:0.16.0
|
||||
environment:
|
||||
BITCOIN_EXTRA_ARGS: "rpcuser=ceiwHEbqWI83\nrpcpassword=DwubwWsoo3\nregtest=1\nrpcport=43782\nport=8332"
|
||||
expose:
|
||||
- "43782"
|
||||
- "8332"
|
||||
|
||||
postgres:
|
||||
image: postgres:9.6.5
|
||||
14
Test/README.md
Normal file
14
Test/README.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# About this docker-compose
|
||||
|
||||
This `docker-compose` shows how to configure postgres, bitcoind, NBXplorer and BTCPay on regtest.
|
||||
|
||||

|
||||
|
||||
This is the same architecture as [Production](../Production)
|
||||
|
||||
The relevant environment variables are:
|
||||
|
||||
* `NBITCOIN_NETWORK`: the blockchain identifier used by NBitcoin (eg., `regtest`, `testnet`, `mainnet`)
|
||||
* `BTCPAY_HOST`: the external url used to access your server from internet. This domain name must point to this machine for Let's Encrypt to create your certificate. (typically with a CNAME or A record)
|
||||
|
||||
The port `80` is exposed.
|
||||
89
Test/docker-compose.btc-ltc.yml
Normal file
89
Test/docker-compose.btc-ltc.yml
Normal file
@@ -0,0 +1,89 @@
|
||||
version: "3"
|
||||
services:
|
||||
btcpayserver:
|
||||
restart: always
|
||||
image: nicolasdorier/btcpayserver:1.0.1.53
|
||||
expose:
|
||||
- "49392"
|
||||
environment:
|
||||
BTCPAY_POSTGRES: User ID=postgres;Host=postgres;Port=5432;Database=btcpayserver${NBITCOIN_NETWORK:-regtest}
|
||||
BTCPAY_NETWORK: ${NBITCOIN_NETWORK:-regtest}
|
||||
BTCPAY_BIND: 0.0.0.0:49392
|
||||
BTCPAY_EXTERNALURL: https://${BTCPAY_HOST}/
|
||||
VIRTUAL_NETWORK: nginx-proxy
|
||||
VIRTUAL_PORT: 49392
|
||||
VIRTUAL_HOST: ${BTCPAY_HOST}
|
||||
LETSENCRYPT_HOST: ${BTCPAY_HOST}
|
||||
LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com}
|
||||
BTCPAY_CHAINS: "btc,ltc"
|
||||
BTCPAY_BTCEXPLORERURL: http://nbxplorer:32838/
|
||||
BTCPAY_LTCEXPLORERURL: http://nbxplorer:32838/
|
||||
links:
|
||||
- nbxplorer
|
||||
- postgres
|
||||
volumes:
|
||||
- "btcpay_datadir:/datadir"
|
||||
- "nbxplorer_datadir:/root/.nbxplorer"
|
||||
ports:
|
||||
- "80:49392"
|
||||
nbxplorer:
|
||||
restart: always
|
||||
image: nicolasdorier/nbxplorer:1.0.1.23
|
||||
expose:
|
||||
- "32838"
|
||||
environment:
|
||||
NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest}
|
||||
NBXPLORER_BIND: 0.0.0.0:32838
|
||||
NBXPLORER_CHAINS: "btc,ltc"
|
||||
NBXPLORER_BTCRPCURL: http://bitcoind:43782/
|
||||
NBXPLORER_BTCNODEENDPOINT: bitcoind:39388
|
||||
NBXPLORER_LTCRPCURL: http://litecoind:43782/
|
||||
NBXPLORER_LTCNODEENDPOINT: litecoind:39388
|
||||
volumes:
|
||||
- "nbxplorer_datadir:/datadir"
|
||||
- "bitcoin_datadir:/root/.bitcoin"
|
||||
- "litecoin_datadir:/root/.litecoin"
|
||||
links:
|
||||
- bitcoind
|
||||
- litecoind
|
||||
postgres:
|
||||
restart: always
|
||||
image: postgres:9.6.5
|
||||
volumes:
|
||||
- "postgres_datadir:/var/lib/postgresql/data"
|
||||
bitcoind:
|
||||
restart: always
|
||||
container_name: btcpayserver_bitcoind
|
||||
image: nicolasdorier/docker-bitcoin:0.16.0
|
||||
environment:
|
||||
BITCOIN_EXTRA_ARGS: |
|
||||
rpcport=43782
|
||||
${NBITCOIN_NETWORK:-regtest}=1
|
||||
port=39388
|
||||
whitelist=0.0.0.0/0
|
||||
expose:
|
||||
- "43782"
|
||||
- "39388"
|
||||
volumes:
|
||||
- "bitcoin_datadir:/data"
|
||||
litecoind:
|
||||
restart: always
|
||||
container_name: btcpayserver_litecoind
|
||||
image: nicolasdorier/docker-litecoin:0.14.2
|
||||
environment:
|
||||
BITCOIN_EXTRA_ARGS: |
|
||||
rpcport=43782
|
||||
${NBITCOIN_NETWORK:-regtest}=1
|
||||
port=39388
|
||||
whitelist=0.0.0.0/0
|
||||
expose:
|
||||
- "43782"
|
||||
- "39388"
|
||||
volumes:
|
||||
- "litecoin_datadir:/data"
|
||||
volumes:
|
||||
postgres_datadir:
|
||||
btcpay_datadir:
|
||||
nbxplorer_datadir:
|
||||
bitcoin_datadir:
|
||||
litecoin_datadir:
|
||||
@@ -1,49 +1,5 @@
|
||||
version: "3"
|
||||
services:
|
||||
nginx:
|
||||
restart: always
|
||||
image: nginx
|
||||
container_name: nginx
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- "nginx_conf:/etc/nginx/conf.d"
|
||||
- "nginx_vhost:/etc/nginx/vhost.d"
|
||||
- "nginx_html:/usr/share/nginx/html"
|
||||
- "nginx_certs:/etc/nginx/certs:ro"
|
||||
links:
|
||||
- btcpayserver
|
||||
nginx-gen:
|
||||
restart: always
|
||||
image: jwilder/docker-gen
|
||||
container_name: nginx-gen
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/tmp/docker.sock:ro"
|
||||
- "./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro"
|
||||
- "nginx_conf:/etc/nginx/conf.d"
|
||||
- "nginx_vhost:/etc/nginx/vhost.d"
|
||||
- "nginx_html:/usr/share/nginx/html"
|
||||
- "nginx_certs:/etc/nginx/certs:ro"
|
||||
entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
|
||||
links:
|
||||
- nginx
|
||||
letsencrypt-nginx-proxy-companion:
|
||||
restart: always
|
||||
image: jrcs/letsencrypt-nginx-proxy-companion
|
||||
container_name: letsencrypt-nginx-proxy-companion
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
- "nginx_conf:/etc/nginx/conf.d"
|
||||
- "nginx_vhost:/etc/nginx/vhost.d"
|
||||
- "nginx_html:/usr/share/nginx/html"
|
||||
- "nginx_certs:/etc/nginx/certs:rw"
|
||||
environment:
|
||||
NGINX_DOCKER_GEN_CONTAINER: "nginx-gen"
|
||||
NGINX_PROXY_CONTAINER: "nginx"
|
||||
ACME_CA_URI: ${ACME_CA_URI:-https://acme-staging.api.letsencrypt.org/directory}
|
||||
links:
|
||||
- nginx
|
||||
btcpayserver:
|
||||
restart: always
|
||||
image: nicolasdorier/btcpayserver:1.0.1.53
|
||||
@@ -67,6 +23,8 @@ services:
|
||||
volumes:
|
||||
- "btcpay_datadir:/datadir"
|
||||
- "nbxplorer_datadir:/root/.nbxplorer"
|
||||
ports:
|
||||
- "80:49392"
|
||||
nbxplorer:
|
||||
restart: always
|
||||
image: nicolasdorier/nbxplorer:1.0.1.23
|
||||
@@ -104,10 +62,6 @@ services:
|
||||
volumes:
|
||||
- "bitcoin_datadir:/data"
|
||||
volumes:
|
||||
nginx_conf:
|
||||
nginx_vhost:
|
||||
nginx_html:
|
||||
nginx_certs:
|
||||
postgres_datadir:
|
||||
btcpay_datadir:
|
||||
nbxplorer_datadir:
|
||||
@@ -0,0 +1,6 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
btcpayserver:
|
||||
ports:
|
||||
- "80:49392"
|
||||
@@ -10,12 +10,15 @@ namespace DockerGenerator
|
||||
{
|
||||
public class DockerComposeDefinition
|
||||
{
|
||||
string[] _Fragments;
|
||||
public List<string> Fragments
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
private string _Name;
|
||||
|
||||
public DockerComposeDefinition(string name, string[] fragments)
|
||||
public DockerComposeDefinition(string name, List<string> fragments)
|
||||
{
|
||||
_Fragments = fragments;
|
||||
Fragments = fragments;
|
||||
_Name = name;
|
||||
}
|
||||
|
||||
@@ -39,21 +42,21 @@ namespace DockerGenerator
|
||||
var serializer = new SerializerBuilder().Build();
|
||||
|
||||
Console.WriteLine($"With fragments:");
|
||||
foreach(var fragment in _Fragments)
|
||||
foreach(var fragment in Fragments)
|
||||
{
|
||||
Console.WriteLine($"\t{fragment}");
|
||||
}
|
||||
var services = new List<KeyValuePair<YamlNode, YamlNode>>();
|
||||
var volumes = new List<KeyValuePair<YamlNode, YamlNode>>();
|
||||
|
||||
foreach(var doc in _Fragments.Select(f => ParseDocument(f)))
|
||||
foreach(var doc in Fragments.Select(f => ParseDocument(f)))
|
||||
{
|
||||
if(doc.Children["services"] is YamlMappingNode fragmentServicesRoot)
|
||||
if(doc.Children.ContainsKey("services") && doc.Children["services"] is YamlMappingNode fragmentServicesRoot)
|
||||
{
|
||||
services.AddRange(fragmentServicesRoot.Children);
|
||||
}
|
||||
|
||||
if(doc.Children["volumes"] is YamlMappingNode fragmentVolumesRoot)
|
||||
if(doc.Children.ContainsKey("volumes") && doc.Children["volumes"] is YamlMappingNode fragmentVolumesRoot)
|
||||
{
|
||||
volumes.AddRange(fragmentVolumesRoot.Children);
|
||||
}
|
||||
|
||||
@@ -15,11 +15,10 @@ namespace DockerGenerator
|
||||
private void Run()
|
||||
{
|
||||
List<DockerComposeDefinition> defs = new List<DockerComposeDefinition>();
|
||||
var btc = new DockerComposeDefinition("btc",
|
||||
new string[] { "nginx", "btcpayserver", "bitcoin" });
|
||||
defs.Add(btc);
|
||||
defs.Add(new DockerComposeDefinition("btc",
|
||||
new List<string> { "nginx", "btcpayserver", "bitcoin" }));
|
||||
defs.Add(new DockerComposeDefinition("btc-ltc",
|
||||
new string[] { "nginx", "btcpayserver", "bitcoin", "litecoin" }));
|
||||
new List<string> { "nginx", "btcpayserver", "bitcoin", "litecoin" }));
|
||||
|
||||
var fragmentLocation = FindLocation("docker-fragments");
|
||||
var productionLocation = FindLocation("Production");
|
||||
@@ -29,7 +28,15 @@ namespace DockerGenerator
|
||||
def.BuildOutputDirectory = productionLocation;
|
||||
def.Build();
|
||||
}
|
||||
File.Copy(btc.GetFilePath(), Path.Combine(new FileInfo(btc.GetFilePath()).Directory.FullName, "docker-compose.yml"), true);
|
||||
|
||||
var testLocation = FindLocation("Test");
|
||||
foreach(var def in defs)
|
||||
{
|
||||
def.Fragments.Remove("nginx");
|
||||
def.Fragments.Add("btcpayserver-test");
|
||||
def.BuildOutputDirectory = testLocation;
|
||||
def.Build();
|
||||
}
|
||||
}
|
||||
|
||||
private string FindLocation(string path)
|
||||
|
||||
Reference in New Issue
Block a user