Skip to content

部署

介绍

在将 Goyave 应用程序部署到生产环境之前,有一些重要的细节需要考虑。我们将在本指南的这一部分中介绍它们,并确保您的应用程序正确部署。

应用程序配置

  • 加载配置:
    • 如果您使用自动配置加载,请确保部署应用程序时附带一个 config.production.json 配置文件,其中包含适用于生产环境的正确值,并GOYAVE_ENV 环境变量设置为 production
    • 如果您手动加载配置,请确保应加载的文件位于可执行文件旁边。
    • 如果您使用 embed,请确保在 go build 命令中添加必要的构建标志
  • 确保 app.environment 条目为 production
  • 如果您希望从任何地方开放对服务的访问,server.host 条目应为 0.0.0.0。如果您在同一台机器上使用 Apache 或 Nginx 作为代理,请将其保持为 127.0.0.1,这样服务器将只能通过代理访问。
  • 如果您使用代理,请更新 server.proxy 部分,以便生成的 URL 和重定向指向代理而不是您的应用程序。
  • 如果您使用域名,请将 server.domain 条目更改为您的域名。
  • 更新 server.port
  • server.debug 必须设置为 false,以便您的应用程序输出 JSON 结构化日志而不是人类可读的日志,并且错误消息不会添加到响应中。
  • 更改您的数据库连接凭据。

构建

当然,不要在生产环境中使用 go run 运行您的应用程序。使用 go build 构建您的应用程序,并部署可执行文件以及配置文件和资源目录。

以下 Dockerfile 是一个名为 docker-goyave 的 goyave 应用程序的示例:

Dockerfile
FROM golang:alpine as builder

WORKDIR /app

COPY . .

# 如果您使用嵌入式配置,请添加 "-tags production"
RUN go build -ldflags "-w -s"

FROM alpine:latest

WORKDIR /app

COPY --from=builder /app/docker-goyave ./docker-goyave

# 如果您使用嵌入式资源,则不需要
COPY resources /app/resources

# 如果您使用嵌入式配置,则不需要
COPY config.production.json ./config.production.json

RUN adduser --system --no-create-home --home /app go-exec
RUN chown -R go-exec /app

USER go-exec

EXPOSE 80
ENV GOYAVE_ENV=production

ENTRYPOINT [ "./docker-goyave" ]