diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index ffa30b349..7eaaea492 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -3,16 +3,17 @@ name: Docker on: push: branches: - - develop - - 1.0-develop + - main pull_request: branches: - - develop - - 1.0-develop + - main release: types: - published +permissions: + packages: write + jobs: push: name: Push @@ -26,7 +27,7 @@ jobs: id: docker_meta uses: docker/metadata-action@v4 with: - images: ghcr.io/pterodactyl/panel + images: ghcr.io/pyrohost/panel flavor: | latest=false tags: | @@ -46,7 +47,7 @@ jobs: with: registry: ghcr.io username: ${{ github.repository_owner }} - password: ${{ secrets.REGISTRY_TOKEN }} + password: ${{ secrets.GITHUB_TOKEN }} - name: Update version if: "github.event_name == 'release' && github.event.action == 'published'" diff --git a/Dockerfile b/Dockerfile index aae05a526..034802ab6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,12 @@ # Stage 0: -# Build the assets that are needed for the frontend. This build stage is then discarded -# since we won't need NodeJS anymore in the future. This Docker image ships a final production -# level distribution of Pterodactyl. -FROM --platform=$TARGETOS/$TARGETARCH mhart/alpine-node:14 +# Build the frontend +FROM --platform=$TARGETOS/$TARGETARCH node:lts-alpine WORKDIR /app COPY . ./ -RUN yarn install --frozen-lockfile \ - && yarn run build:production +RUN apk add --no-cache --update git \ + && npm install -g turbo \ + && npm ci \ + && npm run ship # Stage 1: # Build the actual container with all of the needed PHP dependencies that will run the application. @@ -14,6 +14,7 @@ FROM --platform=$TARGETOS/$TARGETARCH php:8.1-fpm-alpine WORKDIR /app COPY . ./ COPY --from=0 /app/public/assets ./public/assets +COPY --from=0 /app/public/build ./public/build RUN apk add --no-cache --update ca-certificates dcron curl git supervisor tar unzip nginx libpng-dev libxml2-dev libzip-dev certbot certbot-nginx \ && docker-php-ext-configure zip \ && docker-php-ext-install bcmath gd pdo_mysql zip \ diff --git a/README.md b/README.md index 46a5a70ac..29cdbc2f2 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,11 @@ Pyrodactyl is the Pterodactyl-based game server management panel that focuses on ## Running Pyrodactyl +> [!TIP] +> Pyrodactyl now [has a Docker image avaliable](https://github.com/pyrohost/panel/pkgs/container/panel), which for previous users of the Pterodactyl panel in Docker, should make it easy to migrate. +> +> If you want to setup Pyrodactyl in Docker from scratch, see the [`docker-compose.example.yml`](https://github.com/pyrohost/panel/blob/main/docker-compose.example.yml). + ### Prerequisites - Latest LTS version of NodeJS diff --git a/docker-compose.example.yml b/docker-compose.example.yml index a0fbaba13..58b21835b 100644 --- a/docker-compose.example.yml +++ b/docker-compose.example.yml @@ -15,6 +15,7 @@ x-common: # Uncomment the line below and set to a non-empty value if you want to use Let's Encrypt # to generate an SSL certificate for the Panel. # LE_EMAIL: "" + HASHIDS_SALT: "CHANGE_ME_TO_A_RANDOM_20_CHAR_STRING" mail: &mail-environment MAIL_FROM: "noreply@example.com" @@ -47,7 +48,7 @@ services: image: redis:alpine restart: always panel: - image: ghcr.io/pterodactyl/panel:latest + image: ghcr.io/pyrohost/panel:main restart: always ports: - "80:80" @@ -71,6 +72,7 @@ services: REDIS_HOST: "cache" DB_HOST: "database" DB_PORT: "3306" + HASHIDS_LENGTH: 8 networks: default: ipam: