Merge pull request #186 from flourgaz/feature/docker-compose
Add basic docker-compose cluster
This commit is contained in:
		
							
								
								
									
										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 | ||||
		Reference in New Issue
	
	Block a user
	 Omar Roth
					Omar Roth