From 540fd269dfb78268551da4850e962af6e9fae4f4 Mon Sep 17 00:00:00 2001 From: Camerin Figueroa Date: Thu, 7 Mar 2024 21:57:25 +0000 Subject: [PATCH] Added Docker and short instructions Better documentation and process to come --- .env | 2 +- .env.docker | 1 + Dockerfile | 14 ++++++++++++++ README.md | 13 +++++++++++++ deploy.sh | 21 +++++++++++++++++++++ docker-compose.yml | 34 ++++++++++++++++++++++++++++++++++ 6 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 .env.docker create mode 100644 Dockerfile create mode 100644 deploy.sh create mode 100644 docker-compose.yml diff --git a/.env b/.env index 0841e48..518ba65 100644 --- a/.env +++ b/.env @@ -1 +1 @@ -DATABASE_URL=postgres://username:password@localhost/request_mirror_db \ No newline at end of file +DATABASE_URL=postgres://postgres:password@localhost/request_mirror_db \ No newline at end of file diff --git a/.env.docker b/.env.docker new file mode 100644 index 0000000..195437b --- /dev/null +++ b/.env.docker @@ -0,0 +1 @@ +DATABASE_URL=postgres://postgres:password@postgres/request_mirror_db \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fa6cd29 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM rustlang/rust:nightly as builder +WORKDIR ./app +COPY . . +RUN cargo install --path . + +FROM debian:bookworm-slim as runner +RUN apt update && apt install -y libpq-dev libc6 +COPY --from=builder /usr/local/cargo/bin/request-mirror /usr/local/bin/request-mirror +COPY ./templates /templates +COPY .env.docker .env +ENV ROCKET_ADDRESS=0.0.0.0 +ENV ROCKET_ENV=production +EXPOSE 8000 +CMD ["request-mirror"] \ No newline at end of file diff --git a/README.md b/README.md index 317ad46..c950952 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,16 @@ This application provides a web ui for sending get/post requests and provides a ## TODO: - Update Readme - Document + - Setup Docker + +## Docker + +This is the current setup for getting the webapp to work with docker. This may not work on your machine, this is beta. + +```bash +cd request-mirror + +sh deploy.sh +``` + +This will setup the container. A better setup will come in the future. diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..1f8aaca --- /dev/null +++ b/deploy.sh @@ -0,0 +1,21 @@ + +# Set Rust to nightly +rustup default nightly + +# Install Diesel +cargo install diesel_cli --no-default-features --features postgres + +# New Network +docker network create postgres-net + +# Setup postgres container +docker pull postgres +docker run -d --rm -p 5432:5432 --name postgres --net postgres-net -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=password postgres + +# Setup db with diesel +diesel database run +diesel migration run + +# Build and start request-mirror +docker build . -t raspberrypi99/request-mirror +docker run -d --rm -p 8000:8000 --name request-mirror --net postgres-net raspberrypi99/request-mirror \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8d31fb0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,34 @@ +version: 3.8 + +services: + request-mirror: + image: request-mirror + ports: + - 80:80 + environment: + - DB_HOST=postgres + depends_on: + - postgres + networks: + - app-network + + postgres: + image: postgres + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=password + - POSTGRES_DB=request_mirror_db + volumes: + - db-data:/var/lib/postgresql/data + networks: + - app-network + +networks: + app-network: + driver: bridge + ipam: + config: + - subnet: 172.16.0.0/24 + +volumes: + db-data: \ No newline at end of file