aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Perry <avaglir@gmail.com>2018-09-24 12:14:37 -0400
committerNathan Perry <avaglir@gmail.com>2018-09-24 12:14:37 -0400
commit1d441876933b96b33439088d7cd0ca27678ab7c8 (patch)
tree440fe2b8c5528a28774773a6f73e44bc8448f7f7
parent12be51078f24cca0f7ceccb0885d1e60a0ae2148 (diff)
dockerize
-rw-r--r--.dockerignore8
-rw-r--r--.env.example3
-rw-r--r--Dockerfile22
-rw-r--r--Dockerfile-migrate9
-rw-r--r--docker-compose.yml33
-rwxr-xr-xsetup_db.sh8
-rw-r--r--src/main.rs2
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);