mirror of
				https://github.com/dokku/buildpack-nginx.git
				synced 2025-11-03 21:26:30 +00:00 
			
		
		
		
	Compare commits
	
		
			45 Commits
		
	
	
		
			v16
			...
			aa191df661
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| aa191df661 | |||
| 7fe92f4821 | |||
| 25fb7889a5 | |||
| 6381244e26 | |||
| 7874622b04 | |||
| 0329f9e0ff | |||
| 043965bc7d | |||
| 3a1e442373 | |||
| 6a99e870e4 | |||
| ad5e831e74 | |||
| ed31137f94 | |||
| a68149bce7 | |||
| 6a592755ff | |||
| 2b95cd179b | |||
| 9b7f098ced | |||
| 7154c020a1 | |||
| a11d1ce303 | |||
| 53b41ec631 | |||
| c8eef60b09 | |||
| 09fe857895 | |||
| 31dc4746e2 | |||
| 59ea0b94e1 | |||
| 301d00c751 | |||
| 28328e4d90 | |||
| dce20c0a8f | |||
| 0e7bef86f9 | |||
| faf2a70272 | |||
| f981b138ed | |||
| 7794c2c36f | |||
| 22619107ab | |||
| 1a28ec8509 | |||
| e28d2049e5 | |||
| 6a73313edb | |||
| 648d73fda6 | |||
| 1769636cc8 | |||
| 6a9c79f8d0 | |||
| 7a1b16877d | |||
| c50c220ba4 | |||
| c2273de014 | |||
| 91c41476ae | |||
| 90c8bd9365 | |||
| 89196adbf1 | |||
| dbbbcc2c3e | |||
| daa9549fb7 | |||
| 66b91f18e4 | 
							
								
								
									
										23
									
								
								.github/workflows/review-app-cleanup.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								.github/workflows/review-app-cleanup.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
			
		||||
---
 | 
			
		||||
name: 'review-app-cleanup'
 | 
			
		||||
 | 
			
		||||
# yamllint disable-line rule:truthy
 | 
			
		||||
on:
 | 
			
		||||
  # onl run this workflow on pull request events
 | 
			
		||||
  pull_request:
 | 
			
		||||
    types:
 | 
			
		||||
      - closed
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  destroy_review_app:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Destroy the review app
 | 
			
		||||
        uses: dokku/github-action@master
 | 
			
		||||
        with:
 | 
			
		||||
          # destroy a review app
 | 
			
		||||
          command: review-apps:destroy
 | 
			
		||||
          git_remote_url: 'ssh://dokku@dokku.com/nginx-buildpack'
 | 
			
		||||
          # specify a name for the review app
 | 
			
		||||
          review_app_name: nginx-buildpack-${{ github.event.pull_request.number }}
 | 
			
		||||
          ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}
 | 
			
		||||
							
								
								
									
										28
									
								
								.github/workflows/review-app.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.github/workflows/review-app.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
---
 | 
			
		||||
name: 'review-app'
 | 
			
		||||
 | 
			
		||||
# yamllint disable-line rule:truthy
 | 
			
		||||
on:
 | 
			
		||||
  # onl run this workflow on pull request events
 | 
			
		||||
  pull_request
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  review_app:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Cloning repo
 | 
			
		||||
        uses: actions/checkout@v2
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 0
 | 
			
		||||
 | 
			
		||||
      - name: Push to dokku
 | 
			
		||||
        uses: dokku/github-action@master
 | 
			
		||||
        with:
 | 
			
		||||
          # create a review app
 | 
			
		||||
          command: review-apps:create
 | 
			
		||||
          git_remote_url: 'ssh://dokku@dokku.com/nginx-buildpack'
 | 
			
		||||
          # specify `--force` as a flag for git pushes
 | 
			
		||||
          git_push_flags: '--force'
 | 
			
		||||
          # specify a name for the review app
 | 
			
		||||
          review_app_name: nginx-buildpack-${{ github.event.pull_request.number }}
 | 
			
		||||
          ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}
 | 
			
		||||
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
								
							@ -22,7 +22,27 @@ heroku buildpacks:set https://github.com/dokku/buildpack-nginx.git
 | 
			
		||||
 | 
			
		||||
## Configuration
 | 
			
		||||
 | 
			
		||||
You can override the nginx root via setting the `NGINX_ROOT` environment variable. This should be a relative path in your repository (for example `dokku config:set <app> NGINX_ROOT=_site` if you are deploying a Jekyll site).
 | 
			
		||||
### Custom nginx root
 | 
			
		||||
 | 
			
		||||
You can override the nginx root via setting the `NGINX_ROOT` environment variable. This should be a relative path in your repository.
 | 
			
		||||
 | 
			
		||||
```shell
 | 
			
		||||
# where the app is named `static-app`
 | 
			
		||||
# and the root dir is _site
 | 
			
		||||
dokku config:set static-app NGINX_ROOT=_site
 | 
			
		||||
````
 | 
			
		||||
 | 
			
		||||
### Default to index for history routing
 | 
			
		||||
 | 
			
		||||
By default, this buildpack will 404 if a requested file is not found. For static sites that use the browser's history router to show the correct context, setting the `NGINX_DEFAULT_REQUEST` to a specific file will override this.
 | 
			
		||||
 | 
			
		||||
```shell
 | 
			
		||||
# where the app is named `static-app`
 | 
			
		||||
# and the desired default response is index.html
 | 
			
		||||
dokku config:set static-app NGINX_ROOT=index.html
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Custom nginx config file
 | 
			
		||||
 | 
			
		||||
You may completely override the built-in nginx config by placing an `app-nginx.conf.sigil` file in the root, modeled after our own [`conf/app-nginx.conf.sigil`](https://github.com/dokku/buildpack-nginx/blob/master/conf/app-nginx.conf.sigil). This will be used inside of the container, and not by the host Dokku instance. See the [sigil project](https://github.com/gliderlabs/sigil) for more information concerning the sigil format.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								bin/ci-pre-deploy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								bin/ci-pre-deploy
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
#!/bin/sh -l
 | 
			
		||||
if [ "$IS_REVIEW_APP" = "true" ]; then
 | 
			
		||||
  git config --global user.name 'Dokku Bot'
 | 
			
		||||
  git config --global user.email no-reply@dokku.com
 | 
			
		||||
 | 
			
		||||
  echo "-----> Purging repo cache"
 | 
			
		||||
  ssh "$SSH_REMOTE" -- repo:purge-cache "$APP_NAME"
 | 
			
		||||
 | 
			
		||||
  echo "-----> Setting the test domain name"
 | 
			
		||||
  ssh "$SSH_REMOTE" -- domains:set "$APP_NAME" "$APP_NAME.dokku.net"
 | 
			
		||||
 | 
			
		||||
  echo "-----> Ensure test includes vendored app-nginx.conf.sigil"
 | 
			
		||||
  cp conf/app-nginx.conf.sigil app-nginx.conf.sigil
 | 
			
		||||
  git add app-nginx.conf.sigil
 | 
			
		||||
  git commit -qm "feat: specify custom app-nginx.conf.sigil"
 | 
			
		||||
 | 
			
		||||
  echo "-----> Ensure test includes vendored mime.types"
 | 
			
		||||
  cp conf/mime.types mime.types
 | 
			
		||||
  git add mime.types
 | 
			
		||||
  git commit -qm "feat: specify custom mime.types"
 | 
			
		||||
 | 
			
		||||
  echo "-----> Setting the buildpack to the current ref $GITHUB_HEAD_REF"
 | 
			
		||||
  echo "https://github.com/${GITHUB_REPOSITORY}.git#$GITHUB_HEAD_REF" > .buildpacks
 | 
			
		||||
  git add .buildpacks
 | 
			
		||||
  git commit -qm "feat: specify $GITHUB_SHA as buildpack"
 | 
			
		||||
 | 
			
		||||
  git rev-parse HEAD >ci-commit-override
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										42
									
								
								bin/compile
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								bin/compile
									
									
									
									
									
								
							@ -1,25 +1,28 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# bin/compile <build-dir> <cache-dir>
 | 
			
		||||
set -eo pipefail; [[ $TRACE ]] && set -x
 | 
			
		||||
set -eo pipefail
 | 
			
		||||
[[ $TRACE ]] && set -x
 | 
			
		||||
 | 
			
		||||
NGINX_VERSION="1.17.0"
 | 
			
		||||
NGINX_VERSION="1.23.1"
 | 
			
		||||
NGINX_TARBALL="nginx-${NGINX_VERSION}.tar.gz"
 | 
			
		||||
PCRE_VERSION="8.45"
 | 
			
		||||
PCRE_TARBALL="pcre-${PCRE_VERSION}.tar.gz"
 | 
			
		||||
SIGIL_VERSION="0.4.0"
 | 
			
		||||
SIGIL_TARBALL="sigil_${SIGIL_VERSION}_Linux_x86_64.tgz"
 | 
			
		||||
ZLIB_VERSION="1.2.11"
 | 
			
		||||
PCRE_VERSION="10.40"
 | 
			
		||||
PCRE_TARBALL="pcre2-${PCRE_VERSION}.tar.gz"
 | 
			
		||||
SIGIL_VERSION="0.9.0"
 | 
			
		||||
SIGIL_TARBALL="gliderlabs-sigil_${SIGIL_VERSION}_linux_amd64.tgz"
 | 
			
		||||
ZLIB_VERSION="1.2.12"
 | 
			
		||||
ZLIB_TARBALL="zlib-${ZLIB_VERSION}.tar.gz"
 | 
			
		||||
 | 
			
		||||
suppress() {
 | 
			
		||||
  /bin/rm --force /tmp/surpress.out 2>/dev/null
 | 
			
		||||
  # shellcheck disable=SC2069
 | 
			
		||||
  /bin/rm --force /tmp/surpress.out 2> /dev/null; "$@" 2>&1 > /tmp/surpress.out || cat /tmp/surpress.out; /bin/rm /tmp/surpress.out;
 | 
			
		||||
  "$@" 2>&1 >/tmp/surpress.out || cat /tmp/surpress.out
 | 
			
		||||
  /bin/rm /tmp/surpress.out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# parse and derive params
 | 
			
		||||
BUILD_DIR=$1
 | 
			
		||||
CACHE_DIR=$2
 | 
			
		||||
CUR_DIR=$(cd "$(dirname "$0")"; cd ..; pwd)
 | 
			
		||||
CUR_DIR=$(cd "$(dirname "$0")" && cd .. && pwd)
 | 
			
		||||
 | 
			
		||||
mkdir -p "$BUILD_DIR" "$CACHE_DIR"
 | 
			
		||||
 | 
			
		||||
@ -54,7 +57,7 @@ fi
 | 
			
		||||
 | 
			
		||||
if [[ ! -d "${PCRE_TARBALL%.tar.gz}" ]]; then
 | 
			
		||||
  echo "-----> Download and unzip pcre ${PCRE_VERSION} via http"
 | 
			
		||||
  curl -sSL "https://downloads.sourceforge.net/project/pcre/pcre/${PCRE_VERSION}/${PCRE_TARBALL}" -o "${PCRE_TARBALL}"
 | 
			
		||||
  curl -sSL "https://github.com/PCRE2Project/pcre2/releases/download/pcre2-${PCRE_VERSION}/${PCRE_TARBALL}" -o "${PCRE_TARBALL}"
 | 
			
		||||
  tar xzf "${PCRE_TARBALL}" && rm -f "${PCRE_TARBALL}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@ -66,12 +69,12 @@ fi
 | 
			
		||||
 | 
			
		||||
if [[ ! -f "sigil" ]]; then
 | 
			
		||||
  echo "-----> Download and unzip sigil ${SIGIL_VERSION} via http"
 | 
			
		||||
  curl -sSL "https://github.com/gliderlabs/sigil/releases/download/v${SIGIL_VERSION}/${SIGIL_TARBALL}" -o "${SIGIL_TARBALL}"
 | 
			
		||||
  curl -sSL "https://github.com/gliderlabs/sigil/releases/download/v${SIGIL_VERSION}/gliderlabs-sigil_${SIGIL_VERSION}_linux_amd64.tgz" -o "${SIGIL_TARBALL}"
 | 
			
		||||
  tar xzf "${SIGIL_TARBALL}" && rm -rf "${SIGIL_TARBALL}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
mkdir -p "$BUILD_DIR/sigil"
 | 
			
		||||
cp -r sigil "$BUILD_DIR/sigil/"
 | 
			
		||||
cp -r gliderlabs-sigil-amd64 "$BUILD_DIR/sigil/sigil"
 | 
			
		||||
 | 
			
		||||
cd "nginx-${NGINX_VERSION}"
 | 
			
		||||
if [[ ! -f "${CACHE_DIR}/bin/nginx" ]]; then
 | 
			
		||||
@ -80,7 +83,7 @@ if [[ ! -f "${CACHE_DIR}/bin/nginx" ]]; then
 | 
			
		||||
  suppress ./configure \
 | 
			
		||||
    --with-cpu-opt=generic \
 | 
			
		||||
    --prefix="$BUILD_DIR/nginx" \
 | 
			
		||||
    --with-pcre=../pcre-${PCRE_VERSION} \
 | 
			
		||||
    --with-pcre=../pcre2-${PCRE_VERSION} \
 | 
			
		||||
    --sbin-path=. \
 | 
			
		||||
    --pid-path=./nginx.pid \
 | 
			
		||||
    --conf-path=./nginx.conf \
 | 
			
		||||
@ -94,7 +97,6 @@ if [[ ! -f "${CACHE_DIR}/bin/nginx" ]]; then
 | 
			
		||||
    --without-http_ssi_module \
 | 
			
		||||
    --without-http_userid_module \
 | 
			
		||||
    --without-http_access_module \
 | 
			
		||||
    --without-http_auth_basic_module \
 | 
			
		||||
    --without-http_autoindex_module \
 | 
			
		||||
    --without-http_geo_module \
 | 
			
		||||
    --without-http_map_module \
 | 
			
		||||
@ -131,20 +133,20 @@ fi
 | 
			
		||||
 | 
			
		||||
# Update the PATH
 | 
			
		||||
mkdir -p "$BUILD_DIR/.profile.d"
 | 
			
		||||
cat > "$BUILD_DIR/.profile.d/nginx.sh" <<"EOF"
 | 
			
		||||
cat >"$BUILD_DIR/.profile.d/nginx.sh" <<"EOF"
 | 
			
		||||
export PATH="$PATH:$HOME/nginx"
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cd "$CUR_DIR"
 | 
			
		||||
 | 
			
		||||
# Add support for app-nginx.conf.sigil
 | 
			
		||||
if [ -f "$BUILD_DIR/app-nginx.conf.sigil" ] ; then
 | 
			
		||||
if [ -f "$BUILD_DIR/app-nginx.conf.sigil" ]; then
 | 
			
		||||
  echo "-----> Using user provided app-nginx.conf.sigil"
 | 
			
		||||
  cp "$BUILD_DIR/app-nginx.conf.sigil" "$BUILD_DIR/nginx/app-nginx.conf.sigil"
 | 
			
		||||
 | 
			
		||||
# Allow deprecated nginx.conf.erb
 | 
			
		||||
elif [ -f "$BUILD_DIR/nginx.conf.erb" ] ; then
 | 
			
		||||
  echo "-----> DEPRECATED: using user provided nginx.conf.erb"
 | 
			
		||||
elif [ -f "$BUILD_DIR/nginx.conf.erb" ]; then
 | 
			
		||||
  echo "-----> DEPRECATED: Using user provided nginx.conf.erb"
 | 
			
		||||
  cp "$BUILD_DIR/nginx.conf.erb" "$BUILD_DIR/nginx/nginx.conf.erb"
 | 
			
		||||
 | 
			
		||||
# ...else, force default file
 | 
			
		||||
@ -154,7 +156,7 @@ else
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# build mime.types unless overridden by user
 | 
			
		||||
if [ -f "$BUILD_DIR/mime.types" ] ; then
 | 
			
		||||
if [ -f "$BUILD_DIR/mime.types" ]; then
 | 
			
		||||
  echo "-----> Using user provided mime.types"
 | 
			
		||||
  cp "$BUILD_DIR/mime.types" "$BUILD_DIR/nginx/mime.types"
 | 
			
		||||
 | 
			
		||||
@ -168,7 +170,7 @@ cat <<EOF >"$BUILD_DIR/start_nginx"
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
rm -f /app/nginx/nginx.conf
 | 
			
		||||
if [[ -f /app/nginx/app-nginx.conf.sigil ]]; then
 | 
			
		||||
  /app/sigil/sigil -f /app/nginx/app-nginx.conf.sigil NGINX_ROOT="\$NGINX_ROOT" PORT="\$PORT" | cat -s > /app/nginx/nginx.conf
 | 
			
		||||
  /app/sigil/sigil -f /app/nginx/app-nginx.conf.sigil NGINX_ROOT="\$NGINX_ROOT" NGINX_DEFAULT_REQUEST="\$NGINX_DEFAULT_REQUEST" PORT="\$PORT" | cat -s > /app/nginx/nginx.conf
 | 
			
		||||
else
 | 
			
		||||
  erb /app/nginx/nginx.conf.erb > /app/nginx/nginx.conf
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# bin/detect <build-dir> <cache-dir>
 | 
			
		||||
set -eo pipefail; [[ $TRACE ]] && set -x
 | 
			
		||||
set -eo pipefail
 | 
			
		||||
[[ $TRACE ]] && set -x
 | 
			
		||||
 | 
			
		||||
# Exit early if app is clearly not an nginx app
 | 
			
		||||
if [[ ! -f "$1/.static" ]]; then
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# bin/release <build-dir>
 | 
			
		||||
set -eo pipefail; [[ $TRACE ]] && set -x
 | 
			
		||||
set -eo pipefail
 | 
			
		||||
[[ $TRACE ]] && set -x
 | 
			
		||||
 | 
			
		||||
cat <<EOF
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,11 @@ http {
 | 
			
		||||
    port_in_redirect off;
 | 
			
		||||
 | 
			
		||||
    location / {
 | 
			
		||||
      try_files $uri $uri/ =404;
 | 
			
		||||
      {{ if ne $.NGINX_DEFAULT_REQUEST "" }}
 | 
			
		||||
        try_files $uri $uri/ /{{ $.NGINX_DEFAULT_REQUEST }};
 | 
			
		||||
      {{ else }}
 | 
			
		||||
        try_files $uri $uri/ =404;
 | 
			
		||||
      {{ end }}
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										45
									
								
								site/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								site/index.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
<head>
 | 
			
		||||
    <title>Example Domain</title>
 | 
			
		||||
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1" />
 | 
			
		||||
    <style type="text/css">
 | 
			
		||||
    body {
 | 
			
		||||
        background-color: #f0f0f2;
 | 
			
		||||
        margin: 0;
 | 
			
		||||
        padding: 0;
 | 
			
		||||
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
 | 
			
		||||
    }
 | 
			
		||||
    div {
 | 
			
		||||
        width: 600px;
 | 
			
		||||
        margin: 5em auto;
 | 
			
		||||
        padding: 2em;
 | 
			
		||||
        background-color: #fdfdff;
 | 
			
		||||
        border-radius: 0.5em;
 | 
			
		||||
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
 | 
			
		||||
    }
 | 
			
		||||
    a:link, a:visited {
 | 
			
		||||
        color: #38488f;
 | 
			
		||||
        text-decoration: none;
 | 
			
		||||
    }
 | 
			
		||||
    @media (max-width: 700px) {
 | 
			
		||||
        div {
 | 
			
		||||
            margin: 0 auto;
 | 
			
		||||
            width: auto;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    </style>
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
<div>
 | 
			
		||||
    <h1>Example Domain</h1>
 | 
			
		||||
    <p>This domain is for use in illustrative examples in documents. You may use this
 | 
			
		||||
    domain in literature without prior coordination or asking for permission.</p>
 | 
			
		||||
    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										2
									
								
								site/robots.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								site/robots.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
User-agent: *
 | 
			
		||||
Disallow: /
 | 
			
		||||
		Reference in New Issue
	
	Block a user