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_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

- `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
28 changes: 14 additions & 14 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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) ###############################################################
Expand Down
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}
40 changes: 15 additions & 25 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 All @@ -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
```

Expand All @@ -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
```

Expand All @@ -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.
Expand All @@ -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
Expand All @@ -88,26 +88,16 @@ 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.

## 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.