diff options
| -rw-r--r-- | .dockerignore | 8 | ||||
| -rw-r--r-- | .env.example | 3 | ||||
| -rw-r--r-- | Dockerfile | 22 | ||||
| -rw-r--r-- | Dockerfile-migrate | 9 | ||||
| -rw-r--r-- | docker-compose.yml | 33 | ||||
| -rwxr-xr-x | setup_db.sh | 8 | ||||
| -rw-r--r-- | src/main.rs | 2 |
7 files changed, 84 insertions, 1 deletions
diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..88d748b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +.idea/ +target/ +Cargo.lock +LICENSE +.gitignore +.dockerignore +Dockerfile +.env.example diff --git a/.env.example b/.env.example index e97de41..142a29d 100644 --- a/.env.example +++ b/.env.example @@ -3,3 +3,6 @@ OWNER_ID=def VOICE_CHANNEL=ghi THULANI_CLIENT_ID=jkl THULANI_TOKEN=mno +OP_ID=pqr +DEFAULT_CHANNEL=stu +DATABASE_URL=vwx
\ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..92c9cf4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +FROM rustlang/rust:nightly + +RUN apt-get update -yqq && apt-get install -yqq libsodium-dev + +WORKDIR /usr/src/thulani +COPY src ./src +COPY Cargo.toml ./ + +RUN cargo fetch + +COPY .env ./ + +RUN cargo build --release + +FROM python:3 +RUN pip install youtube-dl +RUN apt-get update -yqq && apt-get install -yqq libsodium18 ffmpeg + +COPY --from=0 /usr/src/thulani/target/release/thulani . +COPY .env ./ + +CMD ["./thulani"] diff --git a/Dockerfile-migrate b/Dockerfile-migrate new file mode 100644 index 0000000..e41b396 --- /dev/null +++ b/Dockerfile-migrate @@ -0,0 +1,9 @@ +FROM christophwurst/diesel-cli + +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update -yqq && apt-get install -yqq postgresql postgresql-contrib + +COPY migrations ./migrations +COPY setup_db.sh Cargo.toml ./ + +CMD ["./setup_db.sh"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a3f011e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,33 @@ +version: '3' +services: + thulani: + image: thulani + build: . + depends_on: + - db + - migrate + + environment: + DATABASE_URL: "postgres://thulani:clickheretodie@db/memes" + RUST_BACKTRACE: 1 + + db: + image: postgres:latest + restart: always + volumes: + - db-data:/var/lib/postgresql/data + environment: + POSTGRES_USER: thulani + POSTGRES_PASSWORD: clickheretodie + POSTGRES_DB: memes + + migrate: + build: + context: . + dockerfile: Dockerfile-migrate + restart: on-failure + depends_on: + - db + +volumes: + db-data: diff --git a/setup_db.sh b/setup_db.sh new file mode 100755 index 0000000..8d819e5 --- /dev/null +++ b/setup_db.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -e + +export PGPASSWORD=clickheretodie + +psql -h db -U thulani -w -c "CREATE EXTENSION IF NOT EXISTS pgcrypto" memes +diesel migration run --database-url "postgres://thulani:clickheretodie@db/memes" diff --git a/src/main.rs b/src/main.rs index 24f35a7..2974eea 100644 --- a/src/main.rs +++ b/src/main.rs @@ -77,7 +77,7 @@ impl EventHandler for Handler { } fn run() -> Result<()> { - let token = &env::var("THULANI_TOKEN")?; + let token = &dotenv::var("THULANI_TOKEN").map_err(|e| format_err!("missing token"))?; let mut client = Client::new(token, Handler)?; commands::VoiceManager::register(&mut client); |
