Skip to content

Commit

Permalink
Restructure
Browse files Browse the repository at this point in the history
  • Loading branch information
arnested committed Jun 26, 2024
1 parent 6c87263 commit 9582aa8
Show file tree
Hide file tree
Showing 10 changed files with 78 additions and 40 deletions.
30 changes: 21 additions & 9 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,23 @@ permissions:
contents: read

jobs:
derivates:
name: Lookup derivates
runs-on: ubuntu-22.04
outputs:
matrix: ${{ env.derivates }}
steps:
- uses: actions/checkout@v4
- name: Lookup derivates
run: echo "derivates=$(make _derivates)" >> "$GITHUB_ENV"
build:
name: HTTPS Proxy
runs-on: ubuntu-22.04
needs: derivates
strategy:
fail-fast: false
matrix:
derivate: ${{ fromJSON(needs.derivates.outputs.matrix) }}
platform: [linux/arm64, linux/amd64]
steps:
- uses: actions/checkout@v4
Expand All @@ -20,25 +31,26 @@ jobs:
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
- name: Build HTTPS proxy (${{ matrix.platform }})
- name: Build HTTPS ${{ matrix.derivate }} proxy (${{ matrix.platform }})
uses: docker/build-push-action@v6
with:
file: "Dockerfile"
target: ${{ matrix.derivate }}
builder: ${{ steps.buildx.outputs.name }}
context: .
context: context
platforms: ${{ matrix.platform }}
labels: |
org.opencontainers.image.title=HTTPS proxy
org.opencontainers.image.description=Docker image for HTTPS proxy
org.opencontainers.image.title=HTTPS ${{ matrix.derivate }} proxy
org.opencontainers.image.description=Docker image for HTTPS ${{ matrix.derivate }} proxy
org.opencontainers.image.source=https://github.com/${{ github.repository }}
org.opencontainers.image.version=${{ github.sha }}
org.opencontainers.image.version=${{ matrix.derivate }}-${{ github.sha }}
org.opencontainers.image.revision=${{ github.sha }}
tags: |
ghcr.io/${{ github.repository }}:latest
load: ${{ (matrix.platform == 'linux/amd64') }}
ghcr.io/${{ github.repository }}:${{ matrix.derivate }}
load: ${{ (matrix.platform == 'linux/amd64') && matrix.derivate == 'base' }}
- uses: e1himself/[email protected]
if: ${{ (matrix.platform == 'linux/amd64') }}
if: ${{ (matrix.platform == 'linux/amd64') && matrix.derivate == 'base' }}
- name: Test HTTPS proxy
if: ${{ (matrix.platform == 'linux/amd64') }}
if: ${{ (matrix.platform == 'linux/amd64') && matrix.derivate == 'base' }}
run: |
make test
27 changes: 21 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,25 @@ permissions:
packages: write

jobs:
derivates:
name: Lookup derivates
runs-on: ubuntu-22.04
outputs:
matrix: ${{ env.derivates }}
steps:
- uses: actions/checkout@v4
- name: Lookup derivates
run: echo "derivates=$(make _derivates)" >> "$GITHUB_ENV"
build:
name: HTTPS proxy
runs-on: ubuntu-22.04
if: >-
${{ github.event.workflow_run.conclusion == 'success' }}
needs: derivates
strategy:
fail-fast: false
matrix:
derivate: ${{ fromJSON(needs.derivates.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
Expand All @@ -30,19 +44,20 @@ jobs:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.PAT_TOKEN }}
- name: Build HTTPS proxy
- name: Build HTTPS ${{ matrix.derivate }} proxy
uses: docker/build-push-action@v6
with:
file: "Dockerfile"
target: ${{ matrix.derivate }}
builder: ${{ steps.buildx.outputs.name }}
push: true
context: .
context: context
platforms: linux/amd64,linux/arm64
labels: |
org.opencontainers.image.title=HTTPS proxy
org.opencontainers.image.description=Docker image for HTTPS proxy
org.opencontainers.image.title=HTTPS ${{ matrix.derivate }} proxy
org.opencontainers.image.description=Docker image for HTTPS ${{ matrix.derivate }} proxy
org.opencontainers.image.source=https://github.com/${{ github.repository }}
org.opencontainers.image.version=${{ github.sha }}
org.opencontainers.image.version=${{ matrix.derivate }}-${{ github.sha }}
org.opencontainers.image.revision=${{ github.sha }}
tags: |
ghcr.io/${{ github.repository }}:latest
ghcr.io/${{ github.repository }}:${{ matrix.derivate }}
22 changes: 15 additions & 7 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
FROM nginx:1.27.0-alpine3.19-slim@sha256:66943ac4a1ca7f111097d3c656939dfe8ae2bc8314bb45d6d80419c5fb25e304
##
# Base
##
FROM nginx:1.27.0-alpine3.19-slim@sha256:66943ac4a1ca7f111097d3c656939dfe8ae2bc8314bb45d6d80419c5fb25e304 AS base

COPY context/ /
COPY /base /

RUN apk add --no-cache \
bash=~5 \
Expand All @@ -11,12 +14,17 @@ RUN apk add --no-cache \
ARG workdir=/var/www
WORKDIR "${workdir}"

ENV NGINX_FASTCGI_PASS_HOST php
ENV NGINX_FASTCGI_PASS_PORT 9000
ENV NGINX_LISTEN 80
ENV PROFILE drupal

SHELL ["/bin/ash", "-eo", "pipefail", "-c"]

ENTRYPOINT [ "/sbin/tini", "--", "/usr/local/bin/entrypoint" ]
CMD [ "nginx", "-g", "daemon off;" ]

##
# Drupal
##
FROM base AS drupal

COPY /drupal /

ENV NGINX_FASTCGI_PASS_HOST php
ENV NGINX_FASTCGI_PASS_PORT 9000
18 changes: 11 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
PLATFORMS=$(shell docker version --format '{{.Server.Os}}/{{.Server.Arch}}')
PLATFORM=$(shell docker version --format '{{.Server.Os}}/{{.Server.Arch}}')
DERIVATIVES=$(shell ls context)

.DEFAULT_GOAL := build
.DEFAULT_GOAL := all
.PHONY: all build clean help _platforms test

all: PLATFORMS=linux/amd64,linux/arm64
all: $(DERIVATIVES) ## Build Docker images for all derivatives

help: ## Display a list of the public targets
@grep -E -h "^[a-z]+:.*##" $(MAKEFILE_LIST) | sed -e 's/\(.*\):.*## *\(.*\)/\1|\2/' | column -s '|' -t

_derivates: ## Output platforms as JSON list
@echo $(DERIVATIVES) | jq --compact-output --raw-input 'split(" ") | map(select(. != ""))'

_platforms: ## Output platforms as JSON list
@echo $(PLATFORMS) | jq --compact-output --raw-input 'split(",") | map(select(. != ""))'

build: ## Build Docker image for the HTTPS proxy
docker buildx build --platform=$(PLATFORMS) --file Dockerfile --tag ghcr.io/reload/https-proxy:latest --load .
$(DERIVATIVES): Dockerfile context ## Build Docker image for derivative
docker buildx build --target $@ --platform=$(PLATFORM) --file Dockerfile --tag ghcr.io/reload/https-proxy:$@ --load context

test:
dgoss run -e PROFILE=none ghcr.io/reload/https-proxy:latest
test: base
dgoss run ghcr.io/reload/https-proxy:base
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,6 @@ certtool --generate-certificate --load-request /tmp/request.pem --load-ca-certif

cp "${CA_CERT}" /usr/local/share/ca-certificates/
/usr/sbin/update-ca-certificates

mkdir -p /etc/nginx/include.d
envsubst </etc/ssl.conf.template >/etc/nginx/include.d/ssl.conf
5 changes: 5 additions & 0 deletions context/base/etc/ssl.conf.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
listen 443 ssl;
listen [::]:443 ssl;
server_name "${FIRST_VIRTUAL_HOST}";
ssl_certificate /cert/${FIRST_VIRTUAL_HOST}.crt;
ssl_certificate_key /cert/${FIRST_VIRTUAL_HOST}.key;
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,8 @@
# and https://blog.john-pfeiffer.com/drupal-with-docker-compose-and-nginx-and-php-fpm-and-mariadb/
server {

listen 443 ssl;
listen [::]:443 ssl;
server_name "${FIRST_VIRTUAL_HOST}";
ssl_certificate /cert/${FIRST_VIRTUAL_HOST}.crt;
ssl_certificate_key /cert/${FIRST_VIRTUAL_HOST}.key;

include include.d/ssl.conf;

root /var/www/web;

disable_symlinks off;
Expand Down
5 changes: 0 additions & 5 deletions context/etc/entrypoint.d/profile.sh

This file was deleted.

0 comments on commit 9582aa8

Please sign in to comment.