Javascript 那里';这是一种在EC2实例中将变量从userdata传递到docker compose再传递到nginx的方法

Javascript 那里';这是一种在EC2实例中将变量从userdata传递到docker compose再传递到nginx的方法,javascript,amazon-web-services,docker,nginx,amazon-ec2,Javascript,Amazon Web Services,Docker,Nginx,Amazon Ec2,我正在尝试在EC2的一个实例中安装带有docker compose的nginx服务器,我需要传递一个环境变量,该变量在该实例的用户数据中定义 我试着用docker compose的环境选项上传它,但当上传nginx时,它会创建一个静态代码,不能用“process.env.KEY”替换,我想知道是否有办法在构建之前将变量传递给nginx,或者在创建静态文件后更新静态文件 userdata.sh docker-compose.yml 将由ngnix生成的Javascript文件 节点项目的Docke

我正在尝试在EC2的一个实例中安装带有docker compose的nginx服务器,我需要传递一个环境变量,该变量在该实例的用户数据中定义

我试着用docker compose的环境选项上传它,但当上传nginx时,它会创建一个静态代码,不能用“process.env.KEY”替换,我想知道是否有办法在构建之前将变量传递给nginx,或者在创建静态文件后更新静态文件

userdata.sh

docker-compose.yml

将由ngnix生成的Javascript文件

节点项目的Dockerfile

预期: console.log(path.key)--->“keyexpected”

实际: process.env.KEY未定义

请重试

#!/bin/bash
echo KEY="keyexpected" >> /etc/profile

不起作用,问题是“process.env.KEY”已经用nginx构建,是静态代码,应该在构建nginx时添加变量,但此时您还不知道它的值
version: "3.1"
services:
  container1:
                container_name: container1
                image: image1
                restart: always
                network_mode: bridge
                environment:
                        - KEY=${KEY}
                ports:
                - 8080:80
  container2:
                container_name: container2
                image: image2
                restart: always
                network_mode: bridge
                ports:
                - 3000:3000
const path = { key: process.env.KEY };
console.log(path.key)
FROM nginx:1.15.2-alpine

RUN rm -rf /usr/share/nginx/html/

COPY nginx/default.conf /etc/nginx/conf.d/

COPY build /usr/share/nginx/html/

EXPOSE 80

ENTRYPOINT nginx -g 'daemon off;'
#!/bin/bash
echo KEY="keyexpected" >> /etc/profile