![]()
ci/woodpecker/push/woodpecker Pipeline was successful
Details
|
||
---|---|---|
.woodpecker.yml | ||
Dockerfile | ||
README.md | ||
docker-compose.yml | ||
docker-entrypoint.sh | ||
nginx.conf.template | ||
stack.yml |
README.md
host-port-ingress-proxy
-
Docker Container Setup:
- The Docker container is based on the official NGINX Alpine image.
- Several environment variables are defined in the Dockerfile to configure the NGINX reverse proxy. These include
BACKEND_HOST
,BACKEND_TCP_PORT
,BACKEND_UDP_PORT
, andALLOWED_IPS
. - The Dockerfile also installs
curl
for health checking purposes and includes a custom entrypoint script.
-
NGINX Configuration:
- A template for the NGINX configuration (
nginx.conf.template
) is used. This template is processed by the entrypoint script (entrypoint.sh
) to replace placeholders with the actual environment variable values. - The NGINX configuration sets up NGINX as a reverse proxy to forward TCP and UDP traffic to the configured backend host and ports. It also includes IP-based access control.
- Additionally, NGINX listens on a separate HTTP port (8080) with a specific location (
/healthz
) that always returns a200 OK
response. This endpoint is used for health checks.
- A template for the NGINX configuration (
-
Health Checking:
- The Dockerfile defines a
HEALTHCHECK
instruction that usescurl
to periodically check the health of the NGINX server by accessing the/healthz
endpoint. - If the health check fails (does not return
200 OK
), Docker marks the container as unhealthy.
- The Dockerfile defines a
-
Running the Container:
- When the container is run, the environment variables can be set to define the backend host, ports, and allowed IPs.
- Docker's health check mechanism monitors the container's health status by checking the
/healthz
endpoint.
Mermaid Diagram
Here's a Mermaid diagram that visualizes the flow:
graph LR
subgraph Docker Container
NGINX[NGINX Reverse Proxy]
ENTRYPOINT[Entrypoint Script]
CONFIG[nginx.conf.template]
HEALTHCHECK[Health Check]
ENTRYPOINT -->|Processes| CONFIG
CONFIG -->|Configures| NGINX
NGINX -->|TCP/UDP Proxy| BACKEND[Backend Service]
NGINX -->|HTTP Health Check| HEALTHCHECK
HEALTHCHECK -->|curl /healthz| NGINX
end
USER[User] -->|TCP/UDP Request| NGINX
NGINX -->|Responds| USER
DOCKER[Docker Daemon] -->|Periodic Check| HEALTHCHECK
style NGINX fill:#f96,stroke:#333,stroke-width:2px
style BACKEND fill:#ff9,stroke:#333,stroke-width:2px
style USER fill:#9f6,stroke:#333,stroke-width:2px
style HEALTHCHECK fill:#6f9,stroke:#333,stroke-width:2px
style DOCKER fill:#f69,stroke:#333,stroke-width:2px
This diagram represents the flow of requests through the NGINX reverse proxy and how the health check mechanism works within the Docker container. The NGINX Reverse Proxy
handles both TCP/UDP requests and health check requests, forwarding the former to the Backend Service
and responding directly to the latter. The Docker Daemon
periodically triggers the health check to ensure the NGINX server is functioning correctly.