| 
									
										
										
										
											2025-05-09 20:00:06 +00:00
										 |  |  | FROM alpine:3.21 AS builder
 | 
					
						
							| 
									
										
										
										
											2025-05-09 20:09:09 +00:00
										 |  |  | RUN apk add --no-cache 'crystal=1.14.0-r0' shards sqlite-static yaml-static yaml-dev libxml2-static \
 | 
					
						
							| 
									
										
										
										
											2024-11-09 20:52:06 +00:00
										 |  |  |        zlib-static openssl-libs-static openssl-dev musl-dev xz-static
 | 
					
						
							| 
									
										
										
										
											2021-07-15 21:57:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-01 11:24:17 +00:00
										 |  |  | ARG release
 | 
					
						
							| 
									
										
										
										
											2025-08-04 07:40:41 +00:00
										 |  |  | ARG api_only
 | 
					
						
							| 
									
										
										
										
											2021-09-01 11:24:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-15 21:57:20 +00:00
										 |  |  | WORKDIR /invidious
 | 
					
						
							|  |  |  | COPY ./shard.yml ./shard.yml
 | 
					
						
							|  |  |  | COPY ./shard.lock ./shard.lock
 | 
					
						
							| 
									
										
										
										
											2022-01-20 21:33:34 +00:00
										 |  |  | RUN shards install --production
 | 
					
						
							| 
									
										
										
										
											2021-07-15 21:57:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | COPY ./src/ ./src/
 | 
					
						
							|  |  |  | # TODO: .git folder is required for building – this is destructive.
 | 
					
						
							|  |  |  | # See definition of CURRENT_BRANCH, CURRENT_COMMIT and CURRENT_VERSION.
 | 
					
						
							|  |  |  | COPY ./.git/ ./.git/
 | 
					
						
							| 
									
										
										
										
											2021-08-10 05:34:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-12 06:06:15 +00:00
										 |  |  | # Required for fetching player dependencies
 | 
					
						
							|  |  |  | COPY ./scripts/ ./scripts/
 | 
					
						
							|  |  |  | COPY ./assets/ ./assets/
 | 
					
						
							|  |  |  | COPY ./videojs-dependencies.yml ./videojs-dependencies.yml
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-10 05:34:52 +00:00
										 |  |  | RUN crystal spec --warnings all \
 | 
					
						
							|  |  |  |     --link-flags "-lxml2 -llzma"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-04 07:40:41 +00:00
										 |  |  | RUN --mount=type=cache,target=/root/.cache/crystal \
 | 
					
						
							|  |  |  |     crystal build ./src/invidious.cr \
 | 
					
						
							|  |  |  |     ${release:+--release} \
 | 
					
						
							|  |  |  |     --static --warnings all \
 | 
					
						
							|  |  |  |     --link-flags "-lxml2 -llzma" \
 | 
					
						
							|  |  |  |     ${api_only:+-Dapi_only -Dskip_videojs_download}
 | 
					
						
							| 
									
										
										
										
											2021-07-15 21:57:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-09 20:00:06 +00:00
										 |  |  | FROM alpine:3.21
 | 
					
						
							| 
									
										
										
										
											2024-11-09 20:52:06 +00:00
										 |  |  | RUN apk add --no-cache rsvg-convert ttf-opensans tini tzdata
 | 
					
						
							| 
									
										
										
										
											2021-07-15 21:57:20 +00:00
										 |  |  | WORKDIR /invidious
 | 
					
						
							|  |  |  | RUN addgroup -g 1000 -S invidious && \
 | 
					
						
							|  |  |  |     adduser -u 1000 -S invidious -G invidious
 | 
					
						
							|  |  |  | COPY --chown=invidious ./config/config.* ./config/
 | 
					
						
							|  |  |  | RUN mv -n config/config.example.yml config/config.yml
 | 
					
						
							| 
									
										
										
										
											2022-02-25 18:01:14 +00:00
										 |  |  | RUN sed -i 's/host: \(127.0.0.1\|localhost\)/host: invidious-db/' config/config.yml
 | 
					
						
							| 
									
										
										
										
											2021-07-15 21:57:20 +00:00
										 |  |  | COPY ./config/sql/ ./config/sql/
 | 
					
						
							|  |  |  | COPY ./locales/ ./locales/
 | 
					
						
							| 
									
										
										
										
											2021-09-12 06:06:15 +00:00
										 |  |  | COPY --from=builder /invidious/assets ./assets/
 | 
					
						
							| 
									
										
										
										
											2021-07-15 21:57:20 +00:00
										 |  |  | COPY --from=builder /invidious/invidious .
 | 
					
						
							|  |  |  | RUN chmod o+rX -R ./assets ./config ./locales
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | EXPOSE 3000
 | 
					
						
							|  |  |  | USER invidious
 | 
					
						
							| 
									
										
										
										
											2023-01-15 22:16:42 +00:00
										 |  |  | ENTRYPOINT ["/sbin/tini", "--"]
 | 
					
						
							| 
									
										
										
										
											2021-07-15 21:57:20 +00:00
										 |  |  | CMD [ "/invidious/invidious" ]
 |