Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 45 additions & 31 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -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"
37 changes: 37 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# AGENTS.md

## Project

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 `${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 `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: <target>` 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.
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
29 changes: 25 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,22 +1,43 @@
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 build --pull -t ${DOCKER_IMAGE}:${DOCKER_TAG} .

.PHONY: docker-push
docker-push:
docker push ${DOCKER_IMAGE}
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 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 run -it --rm -p 8000:8000 --entrypoint /bin/bash ${DOCKER_IMAGE}:${DOCKER_TAG}
22 changes: 6 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
</p>

<p align=center>
<a href="https://hub.docker.com/r/dockette/expose/"><img src="https://img.shields.io/docker/stars/dockette/expose.svg?style=flat-square"></a>
<a href="https://hub.docker.com/r/dockette/expose/"><img src="https://img.shields.io/docker/pulls/dockette/expose.svg?style=flat-square"></a>
<a href="https://bit.ly/ctteg"><img src="https://img.shields.io/gitter/room/contributte/contributte.svg?style=flat-square"></a>
<a href="https://github.com/sponsors/f3l1x"><img src="https://img.shields.io/badge/sponsor-me-brightgreen?style=flat-square"></a>
<a href="https://github.com/dockette/expose/actions"><img src="https://github.com/dockette/expose/actions/workflows/docker.yml/badge.svg" alt="GitHub Actions"></a>
<a href="https://hub.docker.com/r/dockette/expose"><img src="https://img.shields.io/docker/pulls/dockette/expose.svg" alt="Docker Hub pulls"></a>
<a href="https://github.com/sponsors/f3l1x"><img src="https://img.shields.io/badge/sponsor-GitHub%20Sponsors-ea4aaa" alt="GitHub Sponsors"></a>
<a href="https://github.com/orgs/dockette/discussions"><img src="https://img.shields.io/badge/support-discussions-6f42c1" alt="Support/Discussions"></a>
</p>

-----
Expand Down Expand Up @@ -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.

<a href="https://github.com/f3l1x">
<img width="80" height="80" src="https://avatars2.githubusercontent.com/u/538058?v=3&s=80">
</a>

-----

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.