mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-11-04 06:31:57 +00:00 
			
		
		
		
	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
 | 
				
			||||||
							
								
								
									
										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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user