2022-02-27 13:03:37 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								# syntax=docker/dockerfile:1.3
							 | 
						
					
						
							
								
									
										
										
										
											2022-11-19 10:18:01 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								# Dockerfile reference: https://docs.docker.com/engine/reference/builder/
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-02-26 21:12:26 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								# stage 1: generate the web/assets/dist bundles
							 | 
						
					
						
							
								
									
										
										
										
											2023-10-05 16:06:19 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								FROM --platform=${BUILDPLATFORM} node:18-alpine AS bundler
							 | 
						
					
						
							
								
									
										
										
										
											2021-07-27 14:45:27 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2022-06-09 12:51:19 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								COPY web web
							 | 
						
					
						
							
								
									
										
										
										
											2023-10-05 16:06:19 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								RUN yarn --cwd ./web/source install && \
							 | 
						
					
						
							
								
									
										
										
										
											2023-10-17 12:46:06 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    yarn --cwd ./web/source ts-patch install && \
							 | 
						
					
						
							
								
									
										
										
										
											2023-10-05 16:06:19 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    yarn --cwd ./web/source build   && \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    rm -rf ./web/source
							 | 
						
					
						
							
								
									
										
										
										
											2021-07-27 14:45:27 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-02-26 21:12:26 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								# stage 2: build the executor container
							 | 
						
					
						
							
								
									
										
										
										
											2024-11-25 16:15:33 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								FROM --platform=${TARGETPLATFORM} alpine:3.20 as executor
							 | 
						
					
						
							
								
									
										
										
										
											2021-05-23 23:43:04 +02:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2022-11-19 10:18:01 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								# switch to non-root user:group for GtS
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								USER 1000:1000
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# Because we're doing multi-arch builds we can't easily do `RUN mkdir [...]`
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# but we can hack around that by having docker's WORKDIR make the dirs for
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# us, as the user created above.
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								#
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# See https://docs.docker.com/engine/reference/builder/#workdir
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								#
							 | 
						
					
						
							
								
									
										
										
										
											2024-10-13 21:51:31 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								# First make sure storage + cache exist and are owned by 1000:1000,
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# then go back to just /gotosocial, where we'll actually run from.
							 | 
						
					
						
							
								
									
										
										
										
											2022-11-19 10:18:01 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								WORKDIR "/gotosocial/storage"
							 | 
						
					
						
							
								
									
										
										
										
											2024-10-13 21:51:31 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								WORKDIR "/gotosocial/.cache"
							 | 
						
					
						
							
								
									
										
										
										
											2022-11-19 10:18:01 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								WORKDIR "/gotosocial"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2022-06-09 12:51:19 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								# copy the dist binary created by goreleaser or build.sh
							 | 
						
					
						
							
								
									
										
										
										
											2022-02-27 13:03:37 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								COPY --chown=1000:1000 gotosocial /gotosocial/gotosocial
							 | 
						
					
						
							
								
									
										
										
										
											2021-05-23 23:43:04 +02:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2022-06-09 12:51:19 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								# copy over the web directories with templates, assets etc
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								COPY --chown=1000:1000 --from=bundler web /gotosocial/web
							 | 
						
					
						
							
								
									
										
										
										
											2025-02-26 21:12:26 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								COPY --chown=1000:1000 ./web/assets/swagger.yaml /gotosocial/web/assets/swagger.yaml
							 | 
						
					
						
							
								
									
										
										
										
											2021-05-23 23:43:04 +02:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2024-10-13 21:51:31 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								VOLUME [ "/gotosocial/storage", "/gotosocial/.cache" ]
							 | 
						
					
						
							
								
									
										
										
										
											2021-05-23 23:43:04 +02:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								ENTRYPOINT [ "/gotosocial/gotosocial", "server", "start" ]
							 |