From 72b1f37e8bdc0ddc4f1eb0f299731670db2c34e3 Mon Sep 17 00:00:00 2001 From: Oh My Felix Date: Fri, 29 May 2026 07:57:50 +0000 Subject: [PATCH 1/7] Add Dockette CI rollout baseline --- .github/workflows/docker.yml | 76 +++++++++++++++++++++--------------- Makefile | 8 ++++ README.md | 22 +++-------- 3 files changed, 59 insertions(+), 47 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 5b58b41..8f25ac3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,48 +1,62 @@ -name: Docker +name: "Docker" on: + workflow_dispatch: + push: - branches: master + branches: ["master"] + + schedule: + - cron: "0 8 * * 1" permissions: contents: read jobs: - docker: - runs-on: ubuntu-latest - - name: Docker (dockette/expose) + test: + name: "Test" + runs-on: "ubuntu-latest" steps: - - name: Checkout + - name: "Checkout" uses: actions/checkout@v4 - - name: Login to DockerHub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx + - name: "Set up Docker Buildx" uses: docker/setup-buildx-action@v3 - - name: Cache Docker layers - uses: actions/cache@v4 + - name: "Build image" + uses: docker/build-push-action@v6 with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- + context: "." + load: true + tags: "dockette/expose" + + - name: "Test image" + run: "make test" + + build: + name: "Build" + needs: ["test"] + uses: dockette/.github/.github/workflows/docker.yml@master + secrets: inherit + with: + image: "dockette/expose" + tag: "latest" + context: "." + + docs: + name: "Docs" + runs-on: "ubuntu-latest" + needs: ["build"] + if: github.ref == 'refs/heads/master' - - name: Build and push - uses: docker/build-push-action@v6 + steps: + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Update Docker Hub description" + uses: peter-evans/dockerhub-description@v5 with: - context: . - push: true - tags: dockette/expose - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - platforms: linux/amd64,linux/arm64 + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + repository: "dockette/expose" diff --git a/Makefile b/Makefile index 3973d1d..4211cdc 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,13 @@ DOCKER_IMAGE=dockette/expose +build: docker-build + +test: + docker run --rm ${DOCKER_IMAGE} --version + +run: + docker run -it --rm -p 8000:8000 ${DOCKER_IMAGE} + docker-build: docker build --pull -t ${DOCKER_IMAGE} . diff --git a/README.md b/README.md index c6a85b1..6e57dcb 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,10 @@

- - - - + GitHub Actions + Docker Hub pulls + GitHub Sponsors + Support/Discussions

----- @@ -98,16 +98,6 @@ docker run -it --rm --network=host -e EXPOSE_HOST=expose.local dockette/expose s > Use http://host.docker.internal:5000 on OSX. -## Development +## Maintenance -See [how to contribute](https://contributte.org/contributing.html) to this package. - -This package is currently maintaining by these authors. - - - - - ------ - -Consider to [support](https://github.com/sponsors/f3l1x) **f3l1x**. Also thank you for using this package. +See [how to contribute](https://github.com/dockette/.github/blob/master/CONTRIBUTING.md) to this package. Consider to [support](https://github.com/sponsors/f3l1x) **f3l1x**. Thank you for using this package. From fbb174ce505b433346efc0ee454d98d2cc25de45 Mon Sep 17 00:00:00 2001 From: Oh My Felix Date: Wed, 3 Jun 2026 14:05:59 +0000 Subject: [PATCH 2/7] chore: align Makefile Docker variables --- Makefile | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 4211cdc..38a8099 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,21 @@ DOCKER_IMAGE=dockette/expose +DOCKER_TAG?=latest +DOCKER_PLATFORMS?=linux/amd64,linux/arm64 -build: docker-build +build: + docker buildx build --platform ${DOCKER_PLATFORMS} -t ${DOCKER_IMAGE}:${DOCKER_TAG} . test: - docker run --rm ${DOCKER_IMAGE} --version + docker run --rm ${DOCKER_IMAGE}:${DOCKER_TAG} --version run: - docker run -it --rm -p 8000:8000 ${DOCKER_IMAGE} + docker run -it --rm -p 8000:8000 ${DOCKER_IMAGE}:${DOCKER_TAG} docker-build: - docker build --pull -t ${DOCKER_IMAGE} . + docker build --pull -t ${DOCKER_IMAGE}:${DOCKER_TAG} . docker-push: - docker push ${DOCKER_IMAGE} + docker push ${DOCKER_IMAGE}:${DOCKER_TAG} example-install: composer -d example install @@ -24,7 +27,7 @@ example-share: example/vendor/bin/expose share test-expose: - docker run -it --rm -p 8000:8000 ${DOCKER_IMAGE} + docker run -it --rm -p 8000:8000 ${DOCKER_IMAGE}:${DOCKER_TAG} test-server: - docker run -it --rm -p 8000:8000 --entrypoint /bin/bash ${DOCKER_IMAGE} + docker run -it --rm -p 8000:8000 --entrypoint /bin/bash ${DOCKER_IMAGE}:${DOCKER_TAG} From 1b69845ed356bd874ea4bdc26ea921a1826d9c46 Mon Sep 17 00:00:00 2001 From: Oh My Felix Date: Wed, 3 Jun 2026 14:19:34 +0000 Subject: [PATCH 3/7] chore: place PHONY declarations above targets --- Makefile | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Makefile b/Makefile index 38a8099..cb47bfa 100644 --- a/Makefile +++ b/Makefile @@ -2,32 +2,42 @@ DOCKER_IMAGE=dockette/expose DOCKER_TAG?=latest DOCKER_PLATFORMS?=linux/amd64,linux/arm64 +.PHONY: build build: docker buildx build --platform ${DOCKER_PLATFORMS} -t ${DOCKER_IMAGE}:${DOCKER_TAG} . +.PHONY: test test: docker run --rm ${DOCKER_IMAGE}:${DOCKER_TAG} --version +.PHONY: run run: docker run -it --rm -p 8000:8000 ${DOCKER_IMAGE}:${DOCKER_TAG} +.PHONY: docker-build docker-build: docker build --pull -t ${DOCKER_IMAGE}:${DOCKER_TAG} . +.PHONY: docker-push docker-push: docker push ${DOCKER_IMAGE}:${DOCKER_TAG} +.PHONY: example-install example-install: composer -d example install +.PHONY: example-app example-app: php -S 0.0.0.0:8888 example/index.php +.PHONY: example-share example-share: example/vendor/bin/expose share +.PHONY: test-expose test-expose: docker run -it --rm -p 8000:8000 ${DOCKER_IMAGE}:${DOCKER_TAG} +.PHONY: test-server test-server: docker run -it --rm -p 8000:8000 --entrypoint /bin/bash ${DOCKER_IMAGE}:${DOCKER_TAG} From 634db22ee318e0d3dd67414f4e11cfd38ab3195b Mon Sep 17 00:00:00 2001 From: Oh My Felix Date: Wed, 3 Jun 2026 14:23:12 +0000 Subject: [PATCH 4/7] chore: add AI agent instructions --- AGENTS.md | 19 +++++++++++++++++++ CLAUDE.md | 1 + 2 files changed, 20 insertions(+) create mode 100644 AGENTS.md create mode 100644 CLAUDE.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..e84c2d7 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,19 @@ +# AGENTS.md + +## Project + +Docker image repository in the Dockette organization. + +## Commands + +- `make build` builds the default Docker image. +- `make test` runs the repository smoke tests. +- `make run` starts the image for local use. + +## Guidelines + +- Keep Dockerfiles, `Makefile`, README, and GitHub Actions workflow changes aligned. +- Prefer `DOCKER_*` names for Docker-related Makefile variables. +- Place `.PHONY: ` directly above each Makefile target. +- Keep README badges and maintenance sections consistent with other Dockette image repos. +- Do not introduce unrelated formatting or structural changes. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md From 82bd27ba1b5e167de78981018258170ae1123310 Mon Sep 17 00:00:00 2001 From: Oh My Felix Date: Wed, 3 Jun 2026 14:29:15 +0000 Subject: [PATCH 5/7] chore: specialize AI agent instructions --- AGENTS.md | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index e84c2d7..1a2f173 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,18 +2,36 @@ ## Project -Docker image repository in the Dockette organization. +Dockette Expose builds `dockette/expose`, a Dockerized Beyond Code Expose server/client for sharing local sites through secure tunnels. The image installs PHP 8.0, Composer, Expose `1.5.1`, custom PHP config, and the repository entrypoint. + +## Image + +- Default image: `dockette/expose:latest`. +- Build context: repository root `.` with `Dockerfile`, `entrypoint.sh`, `config.php`, and `php.ini`. +- Base image: `dockette/debian:buster`. +- `make build` uses Docker Buildx and `${DOCKER_PLATFORMS:-linux/amd64,linux/arm64}`. +- Runtime defaults are set by `EXPOSE_HOST`, `EXPOSE_PORT`, `EXPOSE_USERNAME`, `EXPOSE_PASSWORD`, `EXPOSE_TOKEN`, `EXPOSE_ADMIN`, and `EXPOSE_DB`. +- GitHub Actions builds a local test image, runs `make test`, then publishes `latest` through the shared Dockette Docker workflow on `master` and the weekly schedule. ## Commands -- `make build` builds the default Docker image. -- `make test` runs the repository smoke tests. -- `make run` starts the image for local use. +- `make build` builds `${DOCKER_IMAGE}:${DOCKER_TAG}` with Buildx. +- `make docker-build` performs a local `docker build --pull` without Buildx. +- `make test` runs `expose --version` in the image. +- `make run` starts the server on `8000:8000`. +- `make example-install`, `make example-app`, and `make example-share` support the local PHP example. + +## Testing Notes + +- Use `make docker-build test` for a local single-platform validation before runtime testing. +- Use `make -n build test run` to dry-run command wiring without requiring Docker. +- Full server/client testing needs Docker networking, a reachable `EXPOSE_HOST`, and an available mapped port. ## Guidelines -- Keep Dockerfiles, `Makefile`, README, and GitHub Actions workflow changes aligned. +- Keep `Dockerfile`, `entrypoint.sh`, `config.php`, `php.ini`, README environment documentation, and `.github/workflows/docker.yml` aligned. - Prefer `DOCKER_*` names for Docker-related Makefile variables. - Place `.PHONY: ` directly above each Makefile target. - Keep README badges and maintenance sections consistent with other Dockette image repos. +- Preserve documented environment variable defaults unless the README and tests are updated in the same change. - Do not introduce unrelated formatting or structural changes. From 9e37947abe2c2445ab473b4c5e88c5c8e2dbde43 Mon Sep 17 00:00:00 2001 From: Oh My Felix Date: Fri, 5 Jun 2026 11:35:05 +0000 Subject: [PATCH 6/7] docs: fix expose README examples Co-authored-by: Felix --- AGENTS.md | 2 +- README.md | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 1a2f173..13b8cbd 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -10,7 +10,7 @@ Dockette Expose builds `dockette/expose`, a Dockerized Beyond Code Expose server - Build context: repository root `.` with `Dockerfile`, `entrypoint.sh`, `config.php`, and `php.ini`. - Base image: `dockette/debian:buster`. - `make build` uses Docker Buildx and `${DOCKER_PLATFORMS:-linux/amd64,linux/arm64}`. -- Runtime defaults are set by `EXPOSE_HOST`, `EXPOSE_PORT`, `EXPOSE_USERNAME`, `EXPOSE_PASSWORD`, `EXPOSE_TOKEN`, `EXPOSE_ADMIN`, and `EXPOSE_DB`. +- Runtime defaults are set by `EXPOSE_HOST`, `EXPOSE_PORT`, `EXPOSE_USER`, `EXPOSE_PASSWORD`, `EXPOSE_TOKEN`, `EXPOSE_ADMIN`, and `EXPOSE_DB`. - GitHub Actions builds a local test image, runs `make test`, then publishes `latest` through the shared Dockette Docker workflow on `master` and the weekly schedule. ## Commands diff --git a/README.md b/README.md index 6e57dcb..1750023 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,9 @@ Fastest way: docker run \ -it \ --rm \ - -p 80:80 \ + -p 8000:8000 \ -e EXPOSE_HOST=yourdomain.dev \ - -e EXPOSE_PORT=80 \ + -e EXPOSE_PORT=8000 \ dockette/expose ``` @@ -39,8 +39,8 @@ Persistent way: docker run \ -it \ --rm \ - -p 80:80 \ - -v $(pwd)/data:/data + -p 8000:8000 \ + -v $(pwd)/data:/data \ dockette/expose ``` @@ -52,11 +52,11 @@ docker run \ --rm \ --network=host \ -e EXPOSE_HOST=yourdomain.dev \ - -e EXPOSE_PORT=80 \ + -e EXPOSE_PORT=8000 \ dockette/expose \ share \ --subdomain=foo \ - http://0.0.0.0:5000 + http://localhost:5000 ``` > Use http://host.docker.internal:5000 on OSX. @@ -68,7 +68,7 @@ You can easily setup Expose via environment variables. This is list of default v ``` - EXPOSE_HOST=localhost # expose domain - EXPOSE_PORT=8000 # expose port -- EXPOSE_USERNAME=dockette # dashboard user name +- EXPOSE_USER=dockette # dashboard user name - EXPOSE_PASSWORD=expose # dashboard user password - EXPOSE_TOKEN= # expose token - EXPOSE_ADMIN=admin # dashboard subdomain @@ -88,12 +88,12 @@ docker run -it --rm -p 8000:8000 -e EXPOSE_HOST=expose.local dockette/expose echo "Hello world" >> index.php # Application -php -S http://0.0.0.0:5000 index.php +php -S 0.0.0.0:5000 index.php ``` ``` # Tunnel (Unix) -docker run -it --rm --network=host -e EXPOSE_HOST=expose.local dockette/expose share --subdomain=foo http://0.0.0.0:5000 +docker run -it --rm --network=host -e EXPOSE_HOST=expose.local dockette/expose share --subdomain=foo http://localhost:5000 ``` > Use http://host.docker.internal:5000 on OSX. From 1f6d68c595fd7d276c554013b2b070e1bdfa216b Mon Sep 17 00:00:00 2001 From: Milan Sulc Date: Mon, 8 Jun 2026 13:41:12 +0000 Subject: [PATCH 7/7] Fix Expose image build --- Dockerfile | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index 67702f8..330e972 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,12 @@ -FROM dockette/debian:buster +FROM dockette/debian:bullseye LABEL maintainer="sulcmil@gmail.com" # PHP -ENV PHP_MODS_DIR=/etc/php/8.0/mods-available -ENV PHP_CLI_DIR=/etc/php/8.0/cli +ENV PHP_MODS_DIR=/etc/php/8.2/mods-available +ENV PHP_CLI_DIR=/etc/php/8.2/cli ENV PHP_CLI_CONF_DIR=${PHP_CLI_DIR}/conf.d -ENV PHP_CGI_DIR=/etc/php/8.0/cgi +ENV PHP_CGI_DIR=/etc/php/8.2/cgi ENV PHP_CGI_CONF_DIR=${PHP_CGI_DIR}/conf.d ENV TZ=Europe/Prague @@ -25,18 +25,18 @@ RUN apt update && apt dist-upgrade -y && \ apt install -y wget curl apt-transport-https ca-certificates git unzip && \ # PHP DEB.SURY.CZ ########################################################## wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && \ - echo "deb https://packages.sury.org/php/ buster main" > /etc/apt/sources.list.d/php.list && \ + echo "deb https://packages.sury.org/php/ bullseye main" > /etc/apt/sources.list.d/php.list && \ apt update && \ apt install -y --no-install-recommends \ - php8.0-apcu \ - php8.0-bz2 \ - php8.0-bcmath \ - php8.0-cli \ - php8.0-ctype \ - php8.0-curl \ - php8.0-mbstring \ - php8.0-sqlite3 \ - php8.0-zip && \ + php8.2-apcu \ + php8.2-bz2 \ + php8.2-bcmath \ + php8.2-cli \ + php8.2-ctype \ + php8.2-curl \ + php8.2-mbstring \ + php8.2-sqlite3 \ + php8.2-zip && \ # COMPOSER ################################################################# curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --2 && \ # PHP MOD(s) ###############################################################