Skip to content

Nginx

Not available until the next release main

Introduction

The Testcontainers module for Nginx, a high-performance web server commonly used as a reverse proxy, load balancer, and HTTP cache.

Adding this module to your project dependencies

Please run the following command to add the Nginx module to your Go dependencies:

go get github.com/testcontainers/testcontainers-go/modules/nginx

Usage example

ctx := context.Background()

nginxContainer, err := nginx.Run(ctx, "nginx:1.25")
defer func() {
    if err := testcontainers.TerminateContainer(nginxContainer); err != nil {
        log.Printf("failed to terminate container: %s", err)
    }
}()
if err != nil {
    log.Printf("failed to start container: %s", err)
    return
}

Module Reference

Run function

  • Not available until the next release main

The Nginx module exposes one entrypoint function to create the Nginx container, and this function receives three parameters:

func Run(ctx context.Context, img string, opts ...testcontainers.ContainerCustomizer) (*Container, error)
  • context.Context, the Go context.
  • string, the Docker image to use.
  • testcontainers.ContainerCustomizer, a variadic argument for passing options.

Image

Use the second argument in the Run function to set a valid Docker image. In example: Run(context.Background(), "nginx:1.25").

Container Options

When starting the Nginx container, you can pass options in a variadic way to configure it.

WithConfigFile

  • Not available until the next release main

WithConfigFile mounts a custom nginx.conf file at /etc/nginx/nginx.conf in the container, replacing the default Nginx main configuration. The hostPath argument must be an absolute path to the configuration file on the host.

nginx.Run(ctx, "nginx:1.25", nginx.WithConfigFile("/path/to/nginx.conf"))

WithCustomConfig

  • Not available until the next release main

WithCustomConfig mounts a configuration snippet at /etc/nginx/conf.d/default.conf in the container. Use this option to customise the default virtual-host behaviour (locations, upstreams, proxy settings, etc.) without replacing the entire main configuration. The hostPath argument must be an absolute path to the configuration file on the host.

nginx.Run(ctx, "nginx:1.25", nginx.WithCustomConfig("/path/to/default.conf"))

The following options are exposed by the testcontainers package.

Basic Options

Lifecycle Options

Files & Mounts Options

Build Options

Logging Options

Image Options

Networking Options

Advanced Options

Experimental Options

Container Methods

The Nginx container exposes the following methods:

HTTPEndpoint

  • Not available until the next release main

HTTPEndpoint returns the HTTP endpoint of the running Nginx container in the form http://host:mappedPort, using the container's mapped port 80.

httpEndpoint, err := ctr.HTTPEndpoint(ctx)

HTTPSEndpoint

  • Not available until the next release main

HTTPSEndpoint returns the HTTPS endpoint of the running Nginx container in the form https://host:mappedPort, using the container's mapped port 443.

httpsEndpoint, err := nginxContainer.HTTPSEndpoint(ctx)