basic docker-compose cluster
This commit is contained in:
parent
29a6291957
commit
71a99542fe
21
docker-compose.yml
Normal file
21
docker-compose.yml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/Dockerfile.postgres
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- postgresdata:/var/lib/postgresql/data
|
||||||
|
invidious:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/Dockerfile
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
depends_on:
|
||||||
|
- postgres
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgresdata:
|
15
docker/Dockerfile
Normal file
15
docker/Dockerfile
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
FROM archlinux/base
|
||||||
|
|
||||||
|
RUN pacman -Sy --noconfirm shards crystal imagemagick librsvg \
|
||||||
|
which pkgconf gcc ttf-liberation
|
||||||
|
# base-devel contains many other basic packages, that are normally assumed to already exist on a clean arch system
|
||||||
|
|
||||||
|
ADD . /invidious
|
||||||
|
|
||||||
|
WORKDIR /invidious
|
||||||
|
|
||||||
|
RUN sed -i 's/host: localhost/host: postgres/' config/config.yml && \
|
||||||
|
shards && \
|
||||||
|
crystal build src/invidious.cr
|
||||||
|
|
||||||
|
CMD [ "/invidious/invidious" ]
|
10
docker/Dockerfile.postgres
Normal file
10
docker/Dockerfile.postgres
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
FROM postgres:10
|
||||||
|
|
||||||
|
ENV POSTGRES_USER postgres
|
||||||
|
|
||||||
|
ADD ./setup.sh /setup.sh
|
||||||
|
ADD ./config/sql /config/sql
|
||||||
|
ADD ./docker/entrypoint.postgres.sh /entrypoint.sh
|
||||||
|
|
||||||
|
ENTRYPOINT [ "/entrypoint.sh" ]
|
||||||
|
CMD [ "postgres" ]
|
19
docker/entrypoint.postgres.sh
Executable file
19
docker/entrypoint.postgres.sh
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CMD="$@"
|
||||||
|
if [ ! -f /var/lib/postgresql/data/setupFinished ]; then
|
||||||
|
echo "### first run - setting up invidious database"
|
||||||
|
/usr/local/bin/docker-entrypoint.sh postgres &
|
||||||
|
sleep 10
|
||||||
|
until runuser -l postgres -c 'pg_isready' 2>/dev/null; do
|
||||||
|
>&2 echo "### Postgres is unavailable - waiting"
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
>&2 echo "### importing table schemas"
|
||||||
|
su postgres -c "/setup.sh" && touch /var/lib/postgresql/data/setupFinished
|
||||||
|
echo "### invidious database setup finished"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "running postgres /usr/local/bin/docker-entrypoint.sh $CMD"
|
||||||
|
exec /usr/local/bin/docker-entrypoint.sh $CMD
|
3
setup.sh
3
setup.sh
|
@ -1,7 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
createdb invidious
|
createdb invidious
|
||||||
createuser kemal
|
#createuser kemal
|
||||||
|
psql -c "CREATE USER kemal WITH PASSWORD 'kemal';"
|
||||||
psql invidious < config/sql/channels.sql
|
psql invidious < config/sql/channels.sql
|
||||||
psql invidious < config/sql/videos.sql
|
psql invidious < config/sql/videos.sql
|
||||||
psql invidious < config/sql/channel_videos.sql
|
psql invidious < config/sql/channel_videos.sql
|
||||||
|
|
Loading…
Reference in a new issue