部署
介绍
在将 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" ]