mirror of
				https://codeberg.org/ashley/poke
				synced 2025-07-17 16:52:11 +00:00 
			
		
		
		
	Merge pull request 'Docker Changes' (#23) from npgo22/poketube-docker:docker into main
Reviewed-on: https://codeberg.org/Ashley/poketube/pulls/23
This commit is contained in:
		
						commit
						1219914ed7
					
				| @ -1,12 +1,17 @@ | ||||
| version: '3.1' | ||||
| 
 | ||||
| # TODO: Dockerize the other services | ||||
| 
 | ||||
| services: | ||||
|   proxy: | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: p/Dockerfile | ||||
|       target: release-aio | ||||
|       # cache_to:  | ||||
|       # cache_from:  | ||||
|     restart: unless-stopped | ||||
|     ports: | ||||
|       - 3000:3000 | ||||
|       - 80:80 | ||||
|       - 443:443 | ||||
|       # - 3000:3000 | ||||
|     environment: | ||||
|       - HOSTNAME=example.com | ||||
|       - EMAIL=user@email.com    # required for https | ||||
|       - STAGING=true           # Set to "true" to use staging | ||||
|  | ||||
							
								
								
									
										30
									
								
								entrypoint.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								entrypoint.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| #!/usr/bin/bash | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| if [[ "$STAGING" == true ]]; then | ||||
|     TEST="--test-cert" | ||||
|     echo Using staging server! | ||||
| else | ||||
|     TEST="" | ||||
|     echo Using production server! | ||||
| fi | ||||
| 
 | ||||
| if [[ -v "HOSTNAME" && -v "EMAIL" ]]; then | ||||
|     echo Creating nginx config... | ||||
|     sed -i "s/SERVERNAME/$HOSTNAME/" /etc/nginx/conf.d/poketube.conf | ||||
|     echo Starting certbot | ||||
|     certbot run --nginx -n \ | ||||
|         -d $HOSTNAME \ | ||||
|         -d www.$HOSTNAME --agree-tos \ | ||||
|         --email $EMAIL \ | ||||
|         $TEST | ||||
|     echo Starting nginx | ||||
|     nginx -s reload | ||||
| 
 | ||||
| else | ||||
|     echo Please set HOSTNAME and/or EMAIL! | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| exec "$@" | ||||
							
								
								
									
										19
									
								
								nginx.conf.example
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								nginx.conf.example
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| server { | ||||
|     listen 80; | ||||
|     server_name www.SERVERNAME; | ||||
|     return 301 $scheme://SERVERNAME$request_uri; | ||||
| } | ||||
| 
 | ||||
| server { | ||||
|         listen 80; | ||||
|         server_name SERVERNAME; | ||||
|          | ||||
|         location / { | ||||
|         proxy_set_header X-Real-IP $remote_addr; | ||||
|         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|         proxy_set_header X-NginX-Proxy true; | ||||
|         proxy_pass http://localhost:3000; | ||||
|         proxy_ssl_session_reuse off; | ||||
|         proxy_set_header Host $http_host; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										102
									
								
								p/Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										102
									
								
								p/Dockerfile
									
									
									
									
									
								
							| @ -1,7 +1,99 @@ | ||||
| FROM node:18 | ||||
| WORKDIR /app | ||||
| COPY package.json /app/ | ||||
| COPY p /app/p | ||||
| ################################################################################# | ||||
| #                                  INSTALLERS                                   # | ||||
| #   These images provide the dependencies required to build the other images.   # | ||||
| ################################################################################# | ||||
| 
 | ||||
| FROM quay.io/almalinuxorg/9-base AS builder-installer | ||||
| 
 | ||||
| # Needed for node 18+ | ||||
| # RUN dnf module --assumeyes enable nodejs | ||||
| 
 | ||||
| RUN --mount=type=cache,target=/var/cache/dnf \ | ||||
|     dnf install --assumeyes --nodocs nodejs ca-certificates jq make gcc g++ | ||||
| 
 | ||||
| RUN npm install -g \ | ||||
|     npm@$(curl "https://release-monitoring.org/api/v2/versions/?project_id=190206" | jq --raw-output '.stable_versions[0]') | ||||
| 
 | ||||
| 
 | ||||
| # Runtime dependencies | ||||
| FROM quay.io/almalinuxorg/9-base AS installer | ||||
| 
 | ||||
| COPY --from=quay.io/almalinuxorg/9-micro / /rpms | ||||
| RUN --mount=type=cache,target=/var/cache/dnf \ | ||||
|     dnf install --assumeyes \ | ||||
|     --installroot /rpms \ | ||||
|     --releasever=9 \ | ||||
|     --setopt=install_weak_deps=false \ | ||||
|     --nodocs \ | ||||
|     nodejs ca-certificates | ||||
| 
 | ||||
| RUN dnf clean all \ | ||||
|     --installroot /rpms | ||||
| 
 | ||||
| 
 | ||||
| # Proxy + certbot | ||||
| FROM quay.io/almalinuxorg/9-base AS proxy-installer | ||||
| 
 | ||||
| RUN dnf install epel-release --assumeyes | ||||
| 
 | ||||
| COPY --from=quay.io/almalinuxorg/9-micro / /rpms | ||||
| RUN --mount=type=cache,target=/var/cache/dnf \ | ||||
|     dnf install --assumeyes \ | ||||
|     --installroot /rpms \ | ||||
|     --releasever=9 \ | ||||
|     --setopt=install_weak_deps=false \ | ||||
|     --setopt=reposdir=/etc/yum.repos.d \ | ||||
|     --nodocs \ | ||||
|     nginx-core certbot python3-certbot-nginx | ||||
| 
 | ||||
| RUN dnf clean all \ | ||||
|     --installroot /rpms | ||||
| 
 | ||||
| ################################################################################# | ||||
| #                                    BUILDER                                    # | ||||
| ################################################################################# | ||||
| 
 | ||||
| FROM builder-installer AS builder | ||||
| 
 | ||||
| RUN mkdir -p /usr/src/app | ||||
| WORKDIR /usr/src/app | ||||
| COPY package.json ./ | ||||
| RUN npm install --frozen-lockfile | ||||
| # COPY ./ ./ | ||||
| COPY p/server.js ./ | ||||
| 
 | ||||
| #################################################################################                                      | ||||
| #                                  FINAL IMAGE                                  # | ||||
| ################################################################################# | ||||
| 
 | ||||
| FROM quay.io/almalinuxorg/9-micro AS release-base | ||||
| 
 | ||||
| # Grab npm | ||||
| COPY --from=installer /rpms / | ||||
| 
 | ||||
| # Grab site | ||||
| COPY --from=builder /usr/src/app /app | ||||
| 
 | ||||
| WORKDIR /app | ||||
| 
 | ||||
| ENV NODE_ENV production | ||||
| CMD ["node", "p/server.js"] | ||||
| 
 | ||||
| 
 | ||||
| # Final image | ||||
| FROM release-base as release | ||||
| # EXPOSE 3000/tcp | ||||
| CMD [ "node", "server.js" ] | ||||
| 
 | ||||
| # Final image with extras | ||||
| FROM release-base AS release-aio | ||||
| # Grab nginx and certbot | ||||
| COPY --from=proxy-installer /rpms / | ||||
| 
 | ||||
| COPY entrypoint.sh entrypoint.sh | ||||
| RUN chmod +x entrypoint.sh | ||||
| COPY nginx.conf.example /etc/nginx/conf.d/poketube.conf | ||||
| 
 | ||||
| # EXPOSE 80/tcp | ||||
| # EXPOSE 443/tcp | ||||
| ENTRYPOINT [ "/usr/bin/bash", "./entrypoint.sh" ] | ||||
| CMD [ "node", "server.js" ] | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Ashley
						Ashley