【问题标题】:Can't set environment variables with docker run -e or --env-file option无法使用 docker run -e 或 --env-file 选项设置环境变量
【发布时间】:2020-04-08 12:52:01
【问题描述】:

Dockerfile

FROM node:10

# Create app directory
WORKDIR /usr/server

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json /usr/server/

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
COPY . /usr/server/

EXPOSE 3000

CMD [ "node", "./bin/www.js" ]`

然后我跑

    docker run -d -p 3000:3000 chatapp-back 
    -e DB_HOST="mongodb://localhost:27017/" 
    -e DB_USER="user" 
    -e DB_NAME="dbname" 
    -e DB_PASS="dbpass" 
    -e JWT_SECRET="my-jwt-secret"

docker logs <container-id> 的控制台输出

[eval]:1
JWT_SECRET=my-jwt-secret
^

ReferenceError: my is not defined
    at [eval]:1:1
    at Script.runInThisContext (vm.js:122:20)
    at Object.runInThisContext (vm.js:329:38)
    at Object.<anonymous> ([eval]-wrapper:6:22)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at evalScript (internal/bootstrap/node.js:590:27)
    at startup (internal/bootstrap/node.js:265:9)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

我也试过docker run -d -p 3000:3000 chatapp-back --env-file .env

但控制台返回

node: bad option: --env-file

我在这里做错了

我用docker run documentation

this article

and this article

【问题讨论】:

    标签: docker environment-variables dockerfile


    【解决方案1】:

    重新排列 docker run 命令,因为节点基础 docker 映像的 default entrypointnode,因此容器将 --env-file .env 视为节点进程的参数。

    docker run -d -p 3000:3000  --env-file .env chatapp-back
    

    此外,您可以在运行主进程之前验证这一点。

    docker run -it -p 3000:3000 --env-file .env chatapp-back -e "console.log(process.env)"
    
    

    【讨论】:

    • ...docker run -e 选项相同;它们需要图像名称之前。
    猜你喜欢
    • 2018-04-29
    • 2021-08-23
    • 2015-10-21
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2017-01-13
    • 2023-03-03
    相关资源
    最近更新 更多