feat: update Dockerfile, docker-compose and README for better Docker usage

This commit updates the Dockerfile to use a more docker-friendly approach. Instead of cloning the repository inside the Dockerfile, it now copies the files from the host. It also sets some fixed environment variables and uses a .env file for the rest.

The docker-compose.yml file now uses an .env file for more convenient environment variable management. It also maps volumes to the host, allowing you to change the paths of the `db` folder and `templates` folder.

The README.md has been updated with new instructions reflecting these changes. It now includes instructions for running the Docker container in the foreground or background, and for updating the relay.
This commit is contained in:
fsociety 2024-09-07 15:57:21 +02:00
parent 060fd68c85
commit ca8dde54f1
4 changed files with 70 additions and 53 deletions

View File

@ -3,4 +3,5 @@ RELAY_PUBKEY="e2ccf7cf20403f3f2a4a55b328f0de3be38558a7d5f33632fdaaefc726c1c8eb"
RELAY_DESCRIPTION="Only notes in utxo WoT"
RELAY_URL="wss://wot.utxo.one"
DB_PATH="db"
INDEX_PATH="templates/index.html"
INDEX_PATH="templates/index.html"
STATIC_PATH="templates/static"

View File

@ -1,27 +1,31 @@
# Use Golang image based on Debian Bookworm
FROM golang:bookworm
# Set the working directory within the container
WORKDIR /app
# Clone the repository
RUN git clone https://github.com/bitvora/wot-relay .
# Download Go module dependencies
RUN go mod download
# Write the .env file
RUN touch .env && \
echo "RELAY_NAME=${RELAY_NAME}" >> .env && \
echo "RELAY_PUBKEY=${RELAY_PUBKEY}" >> .env && \
echo "RELAY_DESCRIPTION=${RELAY_DESCRIPTION}" >> .env && \
echo "DB_PATH=${DB_PATH}" >> .env
# Build the Go application
RUN go build -o main .
# Expose the port that the application will run on
EXPOSE 3334
# Set the command to run the executable
CMD ["./main"]
# Use Golang image based on Debian Bookworm
FROM golang:bookworm
# Set the working directory within the container
WORKDIR /app
# Copy go.mod and go.sum files
COPY go.mod go.sum ./
# Download dependencies
RUN go mod download
# Copy the rest of the application source code
COPY . .
# Set fixed environment variables
ENV DB_PATH="db"
ENV INDEX_PATH="templates/index.html"
ENV STATIC_PATH="templates/static"
# touch a .env (https://github.com/bitvora/wot-relay/pull/4)
RUN touch .env
# Build the Go application
RUN go build -o main .
# Expose the port that the application will run on
EXPOSE 3334
# Set the command to run the executable
CMD ["./main"]

View File

@ -97,25 +97,37 @@ To start the project using Docker Compose, follow these steps:
1. Ensure Docker and Docker Compose are installed on your system.
2. Navigate to the project directory.
3. Edit the `docker-compose.yml` file to update the environment variables as needed:
3. Ensure the `.env` file is present in the project directory and has the necessary environment variables set.
4. You can also change the paths of the `db` folder and `templates` folder in the `docker-compose.yml` file.
```yaml
environment:
RELAY_NAME: "utxo WoT relay"
RELAY_PUBKEY: "YOURPUBKEY"
RELAY_DESCRIPTION: "Only notes in utxo WoT"
DB_PATH: "./db"
```
```yaml
volumes:
- "./db:/app/db" # only change the left side before the colon
- "./templates/index.html:/app/templates/index.html" # only change the left side before the colon
- "./templates/static:/app/templates/static" # only change the left side before the colon
```
4. Run the following command:
5. Run the following command:
```sh
docker-compose up --build
# in foreground
docker compose up --build
# in background
docker compose up --build -d
```
6. For updating the relay, run the following command:
```sh
git pull
docker compose build --no-cache
# in foreground
docker compose up
# in background
docker compose up -d
```
This will build the Docker image and start the `wot-relay` service as defined in the `docker-compose.yml` file. The application will be accessible on port 3334.
### 7. Access the relay
Once everything is set up, the relay will be running on `localhost:3334`.

View File

@ -1,14 +1,14 @@
services:
wot-relay:
build:
context: .
dockerfile: Dockerfile
environment:
RELAY_NAME: "utxo WoT relay"
RELAY_PUBKEY: "e2ccf7cf20403f3f2a4a55b328f0de3be38558a7d5f33632fdaaefc726c1c8eb"
RELAY_DESCRIPTION: "Only notes in utxo WoT"
DB_PATH: "./db"
volumes:
- "./db:/app/db"
ports:
- "3334:3334"
services:
wot-relay:
container_name: wot-relay
build:
context: .
dockerfile: Dockerfile
env_file:
- .env
volumes:
- "./db:/app/db" # only change the left side before the colon
- "./templates/index.html:/app/templates/index.html" # only change the left side before the colon
- "./templates/static:/app/templates/static" # only change the left side before the colon
ports:
- "3334:3334"