Skip to content

Commit

Permalink
chore(examples): add docker compose example (#3910)
Browse files Browse the repository at this point in the history
* chore(examples): add docker compose example

* feat: readme with instructions

* fix: rm justfile
  • Loading branch information
EstebanBorai committed Mar 21, 2024
1 parent aaffd7d commit 8c9d0d8
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 0 deletions.
8 changes: 8 additions & 0 deletions examples/docker-compose/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FROM ubuntu:20.04

RUN apt-get update
RUN apt-get install -y curl unzip
RUN curl -fsS https://hub.infinyon.cloud/install/install.sh?ctx=dc | bash

ENV PATH "$PATH:/root/.fluvio/bin"
ENV PATH "$PATH:/root/.fvm/bin"
60 changes: 60 additions & 0 deletions examples/docker-compose/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Docker Compose + Fluvio

You can run Fluvio Clusters in a Docker Compose setup, this could be useful for
local development and POC development.

In order to run a Fluvio Cluster through Docker, you will need to run Fluvio
components separately, we can use Docker Compose `service`s to achieve this.

## Services

- `sc: Streaming Controller`
- `sc-setup: Post-Initialization Commands`
- `spu: Streaming Processing Unit`

> To learn more about Fluvio architecture, please refer to [Fluvio Documentation][1]
## Running Locally

Clone this repo using `git clone https://github.com/infinyon/fluvio.git` and
cd into `./fluvio/examples/docker-compose`, then run `docker compose up --build`.

> Optionally you can run on detached mode `docker compose up --build -d` so
> Fluvio runs in the background.
Then use the `fluvio` CLI to connect to the cluster running in Docker, to do
that you must set the _Fluvio Profile_ to point to Docker's container SC:

> If you dont have the Fluvio CLI installed, run the following command
> `curl -fsS https://hub.infinyon.cloud/install/install.sh | bash`.
> Refer to [Fluvio CLI Reference][2] for more details.
```bash
fluvio profile add docker 127.0.0.1:9103 docker
```

> Fluvio Streaming Controller (SC) usually runs on port `9003` but given that our
> SC is running in a Docker Container, internal port `9003` is mapped to `9103`
> in your system's network.
With the profile set, you are now able to perform Fluvio Client operations
like listing topics:

```bash
fluvio topics list
```

## Teardown

In order to shutdown the Fluvio Cluster running in Docker, you must issue the
following `compose` command:

```bash
docker compose down
```

> Remember to run this command in the same directory as the `docker-compose.yml`
> file.
[1]: https://www.fluvio.io/docs/architecture/overview/
[2]: https://www.fluvio.io/cli/
43 changes: 43 additions & 0 deletions examples/docker-compose/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
version: '3'
services:
sc:
image: infinyon/fluvio:stable
container_name: sc
hostname: sc
ports:
- "9103:9003"
environment:
- RUST_LOG=info
command: "./fluvio-run sc --local /fluvio/metadata"
sc-setup:
build:
context: .
dockerfile: Dockerfile
container_name: sc-setup
environment:
- RUST_LOG=info
entrypoint: >
/bin/sh -c "
fluvio profile add docker sc:9003 docker;
fluvio cluster spu register --id 5001 -p spu:9010 --private-server spu:9011;
exit 0;
"
depends_on:
- sc
spu:
image: infinyon/fluvio:stable
container_name: spu
hostname: spu
volumes:
- fluvio-data:/fluvio/data
environment:
- RUST_LOG=info
ports:
- "9110:9010"
- "9111:9011"
command: "./fluvio-run spu -i 5001 -p spu:9010 -v spu:9011 --sc-addr sc:9004 --log-base-dir /fluvio/data"
depends_on:
- sc
volumes:
fluvio-metadata:
fluvio-data:

0 comments on commit 8c9d0d8

Please sign in to comment.