mirror of
https://github.com/dcarrillo/docker-nginx.git
synced 2025-11-20 02:12:35 +00:00
Bump nginx to 1.29.3 and refactor the building/testing
This commit is contained in:
14
tests/docker-compose.yml
Normal file
14
tests/docker-compose.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
services:
|
||||
nginx:
|
||||
build:
|
||||
context: ..
|
||||
args:
|
||||
ARG_NGINX_VERSION: ${NGINX_VERSION}
|
||||
volumes:
|
||||
- ./nginx.conf:/usr/local/nginx/conf/nginx.conf:ro
|
||||
- /tmp/nginx-ssl/cert.pem:/tmp/cert.pem:ro
|
||||
- /tmp/nginx-ssl/cert.key:/tmp/cert.key:ro
|
||||
- /tmp/nginx-ssl/dhparams.pem:/tmp/dhparams.pem:ro
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
@@ -49,18 +49,13 @@ http {
|
||||
#######################################################
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen 443 http2 ssl;
|
||||
listen 443 ssl;
|
||||
http2 on;
|
||||
server_name _ "";
|
||||
access_log /dev/fd/1;
|
||||
|
||||
location = /nginx_status {
|
||||
stub_status on;
|
||||
}
|
||||
|
||||
location = /phpfpm_status {
|
||||
include /usr/local/nginx/conf/fastcgi_params;
|
||||
fastcgi_pass php:9000;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,45 +2,36 @@
|
||||
|
||||
set -e
|
||||
|
||||
if [ x"$DEBUG" = xtrue ]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
trap _catch_err ERR
|
||||
trap _cleanup EXIT
|
||||
trap catch_err ERR
|
||||
trap cleanup EXIT
|
||||
|
||||
ALPINE_VERSION="alpine:3.19"
|
||||
TMP_DIR=$(mkdir /tmp/nginx-ssl && echo /tmp/nginx-ssl)
|
||||
LOCAL_DIR="$(cd "$(dirname "$0")" ; pwd -P)"
|
||||
# shellcheck disable=SC1090
|
||||
. "$LOCAL_DIR"/../conf.env
|
||||
|
||||
TMP_DIR=$(mktemp -d)
|
||||
|
||||
_catch_err()
|
||||
catch_err()
|
||||
{
|
||||
echo "Test FAILED"
|
||||
}
|
||||
|
||||
_cleanup()
|
||||
cleanup()
|
||||
{
|
||||
echo "Cleaning up..."
|
||||
docker rm -f "${NGINX_VERSION}"_test > /dev/null 2>&1
|
||||
docker rm -f "${NGINX_VERSION}"_requester > /dev/null 2>&1
|
||||
docker rm -f php > /dev/null 2>&1
|
||||
docker compose down
|
||||
rm -rf "$TMP_DIR"
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
_setup_crypto_stuff()
|
||||
setup_crypto()
|
||||
{
|
||||
echo "Generating SSL files..."
|
||||
openssl dhparam -out "$TMP_DIR"/dhparams.pem 1024 > /dev/null 2>&1
|
||||
openssl dhparam -out "$TMP_DIR"/dhparams.pem 2048 > /dev/null 2>&1
|
||||
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
|
||||
-subj "/C=ES/ST=Madrid/L=Madrid/O=dcarrillo/CN=localhost" \
|
||||
-keyout "$TMP_DIR"/cert.key -out "$TMP_DIR"/cert.pem > /dev/null 2>&1
|
||||
}
|
||||
|
||||
_check_status_code()
|
||||
check_status_code()
|
||||
{
|
||||
if [ "$1" != 200 ]; then
|
||||
printf "Test failed, status code %s is not 200\n" "$STATUS_CODE"
|
||||
@@ -50,39 +41,19 @@ _check_status_code()
|
||||
fi
|
||||
}
|
||||
|
||||
_setup_crypto_stuff
|
||||
setup_crypto
|
||||
pushd "$LOCAL_DIR" > /dev/null
|
||||
ln -s ../conf.env .env &>/dev/null || true
|
||||
docker compose up --build --detach
|
||||
|
||||
echo "Preparing php"
|
||||
docker run --name php --rm -d php:fpm-alpine > /dev/null
|
||||
docker exec -i php sh -c "echo 'pm.status_path = /phpfpm_status' \
|
||||
>> /usr/local/etc/php-fpm.d/www.conf \
|
||||
&& kill -USR2 1"
|
||||
|
||||
echo "Running container to be tested..."
|
||||
docker run --name "${NGINX_VERSION}"_test --rm --link php \
|
||||
-v "$LOCAL_DIR"/nginx.conf:/usr/local/nginx/conf/nginx.conf:ro \
|
||||
-v "$TMP_DIR"/cert.pem:/tmp/cert.pem:ro \
|
||||
-v "$TMP_DIR"/cert.key:/tmp/cert.key:ro \
|
||||
-v "$TMP_DIR"/dhparams.pem:/tmp/dhparams.pem:ro \
|
||||
-d "${DOCKER_IMAGE}":"${NGINX_VERSION}" > /dev/null
|
||||
|
||||
echo "Preparing requester container..."
|
||||
docker run --name "${NGINX_VERSION}"_requester --rm --link "${NGINX_VERSION}"_test \
|
||||
-i -d $ALPINE_VERSION sh > /dev/null
|
||||
exec_docker="docker exec -i ${NGINX_VERSION}_requester"
|
||||
$exec_docker apk add curl > /dev/null
|
||||
|
||||
## Test 1-4 http/https/fastcgipass
|
||||
requests="
|
||||
http://${NGINX_VERSION}_test/nginx_status
|
||||
https://${NGINX_VERSION}_test/nginx_status
|
||||
http://${NGINX_VERSION}_test/phpfpm_status
|
||||
https://${NGINX_VERSION}_test/phpfpm_status
|
||||
http://localhost/nginx_status
|
||||
https://localhost/nginx_status
|
||||
"
|
||||
for request in $requests; do
|
||||
printf "\nRequesting %s\n" "$request"
|
||||
STATUS_CODE=$($exec_docker curl -s -k -m 5 -o /dev/null -w "%{http_code}" "$request")
|
||||
_check_status_code "$STATUS_CODE"
|
||||
STATUS_CODE=$(curl -s -k -m 5 -o /dev/null -w "%{http_code}" "$request")
|
||||
check_status_code "$STATUS_CODE"
|
||||
done
|
||||
|
||||
echo "All tests succeeded !"
|
||||
|
||||
Reference in New Issue
Block a user