# lbrycrd Docker image

## Scripts

There are two scripts `deploy.sh` and `auto_deploy.sh` These are used to create 
docker images to push to lbry's Docker Hub.

### `auto_deploy.sh`

This script is used by the LBRYcrd's CI. When a branch or tag is built 
it will create a docker image for it and push it to DockerHub. This should
not be used outside of the CI environment. In addition to this, the 
`Dockerfile.Auto` is associated with this script. This will only run on the
Linux build job. 

#### Requirements

- You would need to build lbrycrd with the Docker image for reproducible 
builds. https://hub.docker.com/repository/docker/lbry/build_lbrycrd
- You will need DockerHub credentials to run this locally. 
- When the script is executed you will need the parameter as
 `./auto_deploy.sh ${tag_name}`

### `deploy.sh`

This can be used locally to manually create a docker image based on a 
release. `release_url` is requested as a parameter to the script when 
run locally. This will grab the binary from github releases inside the
image build. 

#### Requirements

- You will need DockerHub credentials to run this locally. 

## Configuration

The lbrycrd container comes with a default configuration you can use for
production. Extra configuration is optional.

The container includes a `start` script that offers a flexible configuration
style. It allows you to mount your own `lbrycrd.conf` file, or use environment
variables, or a mix of both.

### Environment variables

The environment variables override the values in the mounted config file. If no
mounted config file exists, these variables are used to create a fresh config.

 * `PORT` - The main lbrycrd port
 * `RPC_USER` - The rpc user
 * `RPC_PASSWORD` - The rpc user's password
 * `RPC_ALLOW_IP` - the subnet that is allowed rpc access
 * `RPC_PORT` - The port to bind the rpc service to
 * `RPC_BIND` - The ip address to bind the rpc service to
 

### Example run commands

Running the default configuration:

```
docker run --rm -it -e RUN_MODE=default -e SNAPSHOT_URL="https://lbry.com/snapshot/blockchain" lbry/lbrycrd:latest-release
```

Running with RPC password changed:

```
docker run --rm -it -e RUN_MODE=default -e RPC_PASSWORD=hunter2 lbry/lbrycrd:latest-release
```

Running with a config file but with the RPC password still overridden:

```
docker run --rm -it -v /path/to/lbrycrd.conf:/etc/lbry/lbrycrd.conf -e RUN_MODE=default -e RPC_PASSWORD=hunter2 lbry/lbrycrd:latest-release
```