| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2025-04-28 09:31:51 +00:00
										 |  |  | FROM --platform=${BUILDPLATFORM} node:lts-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 | 
					
						
							| 
									
										
										
										
											2025-04-28 09:31:51 +00:00
										 |  |  | FROM --platform=${TARGETPLATFORM} alpine:3.21 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" ] |