mirror of
https://github.com/JoinMarket-Org/joinmarket-clientserver.git
synced 2026-08-13 12:33:40 +02:00
Add support for --docker-install with an example Dockerfile and some docs on how to use it.
This commit is contained in:
parent
07e198b620
commit
c28bfd50d4
5 changed files with 91 additions and 32 deletions
4
.dockerignore
Normal file
4
.dockerignore
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
.git
|
||||
*.egg-info
|
||||
deps
|
||||
jmvenv
|
||||
13
Dockerfile
Normal file
13
Dockerfile
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
FROM debian:buster-slim
|
||||
|
||||
RUN mkdir -p /jm/clientserver
|
||||
WORKDIR /jm/clientserver
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates=* curl=* \
|
||||
python3-pip=* \
|
||||
&& pip3 install 'wheel>=0.35.1' \
|
||||
&& ./install.sh --docker-install \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
|
@ -55,6 +55,7 @@ Alternative to this "quickstart": follow the [install guide](docs/INSTALL.md).
|
|||
### More installation guides
|
||||
|
||||
* [Installation on Windows](docs/INSTALL.md#installation-on-windows).
|
||||
* [Installation with Docker](docs/INSTALL.md#docker-installation)
|
||||
* [Installation guide for RaspiBlitz](https://github.com/openoms/bitcoin-tutorials/blob/master/joinmarket/README.md).
|
||||
* [Installation guide for RaspiBolt](https://github.com/kristapsk/raspibolt-extras/blob/master/joinmarket.md).
|
||||
* [Installation guide for Qubes+Whonix](https://github.com/qubenix/qubes-whonix-bitcoin/blob/master/1_joinmarket.md).
|
||||
|
|
|
|||
|
|
@ -267,6 +267,17 @@ There, you need to install the client code (without Joinmarket's bitcoin):
|
|||
|
||||
python setupall.py --client-only
|
||||
|
||||
#### Docker Installation
|
||||
|
||||
The [Dockerfile](Dockerfile) provided builds a minimal Docker image which can help in getting started with a custom Docker setup. An example of building and running the [wallet-tool.py](scripts/wallet-tool.py) script:
|
||||
|
||||
```
|
||||
docker build -t joinmarket-test ./
|
||||
docker run --rm -it joinmarket-test bash -c "cd scripts && python3 wallet-tool.py --help"
|
||||
```
|
||||
|
||||
A new Docker image can be built using `joinmarket-test` as a base using `FROM joinmarket-test`. See [Docker documentation](https://docs.docker.com/engine/reference/builder/) for more details.
|
||||
|
||||
#### Development (or making other changes to the code)
|
||||
|
||||
If you are a developer or you plan on modifying the code (for example to add customizations),
|
||||
|
|
|
|||
94
install.sh
94
install.sh
|
|
@ -47,8 +47,12 @@ deps_install ()
|
|||
'pkg-config' \
|
||||
'libtool' \
|
||||
'python3-dev' \
|
||||
'virtualenv' \
|
||||
'python3-pip' )
|
||||
'python3-pip' \
|
||||
'python3-setuptools' \
|
||||
'libltdl-dev' )
|
||||
|
||||
if [ "$with_jmvenv" == 1 ]; then debian_deps+=("virtualenv"); fi
|
||||
if [ "$with_sudo" == 1 ]; then debian_deps+=("sudo"); fi
|
||||
|
||||
darwin_deps=( \
|
||||
'automake' \
|
||||
|
|
@ -84,13 +88,18 @@ deb_deps_install ()
|
|||
deb_deps=( ${@} )
|
||||
if deb_deps_check; then
|
||||
clear
|
||||
echo "
|
||||
sudo password required to run :
|
||||
sudo_command=''
|
||||
if [ "$with_sudo" == 1 ]; then
|
||||
echo "
|
||||
sudo password required to run :
|
||||
|
||||
\`apt-get install ${deb_deps[@]}\`
|
||||
"
|
||||
if ! sudo apt-get install ${deb_deps[@]}; then
|
||||
return 1
|
||||
\`apt-get install ${deb_deps[@]}\`
|
||||
"
|
||||
sudo_command="sudo"
|
||||
fi
|
||||
|
||||
if ! $sudo_command apt-get install -y --no-install-recommends ${deb_deps[@]}; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
|
@ -101,12 +110,17 @@ dar_deps_install ()
|
|||
if ! brew install ${dar_deps[@]}; then
|
||||
return 1
|
||||
fi
|
||||
echo "
|
||||
sudo password required to run :
|
||||
|
||||
\`sudo pip3 install virtualenv\`
|
||||
"
|
||||
if ! sudo pip3 install virtualenv; then
|
||||
sudo_command=''
|
||||
if [ "$with_sudo" == 1 ]; then
|
||||
echo "
|
||||
sudo password required to run :
|
||||
|
||||
\`sudo pip3 install virtualenv\`
|
||||
"
|
||||
sudo_command="sudo"
|
||||
fi
|
||||
if $with_jmvenv && ! $sudo_command pip3 install virtualenv; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
|
@ -316,7 +330,8 @@ joinmarket_install ()
|
|||
fi
|
||||
|
||||
for req in ${reqs[@]}; do
|
||||
pip install -r "requirements/${req}" || return 1
|
||||
if [ "$with_jmvenv" == 1 ]; then pip_command=pip; else pip_command=pip3; fi
|
||||
$pip_command install -r "requirements/${req}" || return 1
|
||||
done
|
||||
|
||||
if [[ ${with_qt} == "1" ]]; then
|
||||
|
|
@ -366,6 +381,10 @@ parse_flags ()
|
|||
--without-qt)
|
||||
with_qt='0'
|
||||
;;
|
||||
--docker-install)
|
||||
with_sudo='0'
|
||||
with_jmvenv='0'
|
||||
;;
|
||||
"")
|
||||
break
|
||||
;;
|
||||
|
|
@ -378,6 +397,7 @@ Options:
|
|||
--develop code remains editable in place (currently always enabled)
|
||||
--disable-os-deps-check skip OS package manager's dependency check
|
||||
--disable-secp-check do not run libsecp256k1 tests (default is to run them)
|
||||
--docker-install system wide install as root for minimal Docker installs
|
||||
--python, -p python version (only python3 versions are supported)
|
||||
--with-qt build the Qt GUI
|
||||
--without-qt don't build the Qt GUI
|
||||
|
|
@ -432,25 +452,31 @@ install_get_os ()
|
|||
|
||||
main ()
|
||||
{
|
||||
jm_source="$PWD"
|
||||
jm_root="${jm_source}/jmvenv"
|
||||
jm_deps="${jm_source}/deps"
|
||||
export PKG_CONFIG_PATH="${jm_root}/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
||||
export LD_LIBRARY_PATH="${jm_root}/lib:${LD_LIBRARY_PATH}"
|
||||
export C_INCLUDE_PATH="${jm_root}/include:${C_INCLUDE_PATH}"
|
||||
export MAKEFLAGS='-j'
|
||||
|
||||
# flags
|
||||
develop_build=''
|
||||
python='python3'
|
||||
use_os_deps_check='1'
|
||||
use_secp_check='1'
|
||||
with_qt=''
|
||||
with_jmvenv='1'
|
||||
with_sudo='1'
|
||||
reinstall='false'
|
||||
if ! parse_flags ${@}; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
jm_source="$PWD"
|
||||
if [ "$with_jmvenv" == 1 ]; then
|
||||
jm_root="${jm_source}/jmvenv"
|
||||
else
|
||||
jm_root=""
|
||||
fi
|
||||
jm_deps="${jm_source}/deps"
|
||||
export PKG_CONFIG_PATH="${jm_root}/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
||||
export LD_LIBRARY_PATH="${jm_root}/lib:${LD_LIBRARY_PATH}"
|
||||
export C_INCLUDE_PATH="${jm_root}/include:${C_INCLUDE_PATH}"
|
||||
export MAKEFLAGS='-j'
|
||||
|
||||
# os check
|
||||
install_os="$( install_get_os )"
|
||||
|
||||
|
|
@ -458,11 +484,13 @@ main ()
|
|||
echo "Dependecies could not be installed. Exiting."
|
||||
return 1
|
||||
fi
|
||||
if ! venv_setup; then
|
||||
echo "Joinmarket virtualenv could not be setup. Exiting."
|
||||
return 1
|
||||
if [ "$with_jmvenv" == 1 ]; then
|
||||
if ! venv_setup; then
|
||||
echo "Joinmarket virtualenv could not be setup. Exiting."
|
||||
return 1
|
||||
fi
|
||||
source "${jm_root}/bin/activate"
|
||||
fi
|
||||
source "${jm_root}/bin/activate"
|
||||
mkdir -p "deps/cache"
|
||||
pushd deps
|
||||
if ! libsecp256k1_install; then
|
||||
|
|
@ -480,15 +508,17 @@ main ()
|
|||
popd
|
||||
if ! joinmarket_install; then
|
||||
echo "Joinmarket was not installed. Exiting."
|
||||
deactivate
|
||||
if [ "$with_jmvenv" == 1 ]; then deactivate; fi
|
||||
return 1
|
||||
fi
|
||||
deactivate
|
||||
echo "Joinmarket successfully installed
|
||||
Before executing scripts or tests, run:
|
||||
if [ "$with_jmvenv" == 1 ]; then
|
||||
deactivate
|
||||
echo "Joinmarket successfully installed
|
||||
Before executing scripts or tests, run:
|
||||
|
||||
\`source jmvenv/bin/activate\`
|
||||
\`source jmvenv/bin/activate\`
|
||||
|
||||
from this directory, to activate virtualenv."
|
||||
from this directory, to activate virtualenv."
|
||||
fi
|
||||
}
|
||||
main ${@}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue