Run with Docker

If you build your application in production using docker, there are certain system dependencies required, namely:

Debian

apt update && apt install -y libffi-dev zlib1g-dev libedit-dev libc++-13-dev libc++abi-13-dev

Alpine

apk add --no-cache gcc musl-dev zlib-static build-base

Most of these are already present in the official Golang docker images.

Important points to ensure in your Dockerfile:

  • Enable CGO while building your application. (default is enabled)

  • Remember to add the build flags: -gcflags="all=-N -l"

  • Install system dependencies.

Here is a sample Dockerfile to deploy our agent in your application.

FROM golang:1.20

# Set destination for COPY
WORKDIR /app

# Install necessary system dependencies, including zlib1g-dev
RUN apt-get update && apt-get install -y zlib1g-dev

# Download Go modules
COPY go.mod go.sum ./
RUN go mod download

# Copy the source code. Note the slash at the end, as explained in
# https://docs.docker.com/engine/reference/builder/#copy
COPY *.go ./

# Build
RUN CGO_ENABLED=1 GOOS=linux go build -gcflags="all=-N -l" -o /app

# Optional:
# To bind to a TCP port, runtime parameters must be supplied to the docker command.
EXPOSE 5000

# Run
CMD ["/app"]

Last updated