首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加载.env文件失败,但仍然获取环境变量

加载.env文件失败,但仍然获取环境变量
EN

Stack Overflow用户
提问于 2022-09-08 15:47:54
回答 1查看 297关注 0票数 0

这就是我加载.env文件并设置变量的代码段。

代码语言:javascript
运行
复制
// init executes the initial configuration.
func init() {
    // loads the file for env. variables
    if err := godotenv.Load(".env"); err != nil {
        log.Printf("failed to load env file: %v\n", err)
    }

    // env variables are set based values within the .env file.
    os.Setenv("dbname", os.Getenv("DB_NAME"))
    os.Setenv("username", os.Getenv("DB_USERNAME"))
    os.Setenv("pw", os.Getenv("DB_PASSWORD"))
    os.Setenv("dbport", os.Getenv("DB_PORT"))
    os.Setenv("server_port", os.Getenv("SERVER_PORT"))
    os.Setenv("hostname", os.Getenv("DB_CONTAINER_NAME"))
}

当我运行docker-compose up --build server时,尽管出现了错误,但一切都正常,如下所示:

代码语言:javascript
运行
复制
server_1  | 2022/09/07 11:44:06 failed to load env file: open .env: no such file or directory

然而,环境是以某种方式设置的。

这是我的docker-compose.yml

代码语言:javascript
运行
复制
version: '3.8'
services:
  db:
    image: postgres:14.1-alpine
    container_name: ${DB_CONTAINER_NAME}
    restart: always
    environment:
      - POSTGRES_DB=${DB_NAME}
      - POSTGRES_USER=${DB_USERNAME}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
    ports:
      - ${DB_PORT}:${DB_PORT}
    env_file:
     - .env
    volumes:
      - db:/var/lib/postgresql/data
      - ./psql/statements/create-tables.sql:/docker-entrypoint-initdb.d/create_table.sql
  server:
        build:
          context: .
          dockerfile: Dockerfile
        env_file: .env
        depends_on:
         - ${DB_CONTAINER_NAME}
        networks:
           - default
        ports:
         - ${SERVER_PORT}:${SERVER_PORT}
volumes:
  db:
    driver: local

以及我的go应用程序的Dockerfile

代码语言:javascript
运行
复制
FROM golang:1.18
WORKDIR /src
COPY go.sum go.mod ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o /bin/app .

FROM alpine
COPY --from=0 /bin/app /bin/app
ENTRYPOINT ["/bin/app"]

我修改了Dockerfile的一些内容,我得到了不同的错误。造成这种问题的原因可能是什么?因为它无法加载,但仍然有效。

EN

回答 1

Stack Overflow用户

发布于 2022-09-08 15:59:36

看起来env变量是由yaml文件中提到的带有.envenv_file: .env文件中的docker组合来设置的。

open .env: no such file or directory是从go应用程序中打印出来的,因为.env文件在容器中不可用,在Dockerfile中也没有COPY/ADD命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73651880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档