Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 配置Dockerfile以设置AWS配置_Node.js_Amazon Web Services_Docker - Fatal编程技术网

Node.js 配置Dockerfile以设置AWS配置

Node.js 配置Dockerfile以设置AWS配置,node.js,amazon-web-services,docker,Node.js,Amazon Web Services,Docker,我刚开始看Docker。我有一个节点应用程序,可以调整大小和图像,然后在完成后向aws发送一条SQS消息。我已经设法创建了我的应用程序的docker映像,从本地计算机复制它,但遇到了一个问题,即我无法设置包含我的客户id和客户机密的AWS变量包来发送SQS消息 以前有人遇到过这个问题吗 我需要在我的dockerfile中编写哪些命令才能设置aws变量 这是我的dockerfile: FROM ubuntu:latest #install node and npm RUN apt-get upd

我刚开始看
Docker
。我有一个节点应用程序,可以调整大小和图像,然后在完成后向aws发送一条
SQS
消息。我已经设法创建了我的应用程序的docker映像,从本地计算机复制它,但遇到了一个问题,即我无法设置包含我的
客户id
客户机密的
AWS
变量包来发送
SQS
消息

以前有人遇到过这个问题吗

我需要在我的
dockerfile
中编写哪些命令才能设置
aws
变量

这是我的
dockerfile

FROM ubuntu:latest

#install node and npm
RUN apt-get update && \
    apt-get -y install curl && \
    curl -sL https://deb.nodesource.com/setup | sudo bash - && \
    apt-get -y install python build-essential nodejs

#install imagemagick, graphicsmagick and set-up aws-cli to send SQS messages
RUN sudo apt-get -y install imagemagick
RUN sudo apt-get -y install graphicsmagick
RUN sudo apt-get install unzip
RUN curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
RUN unzip awscli-bundle.zip
RUN sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

#set-up environment variables for AWS


#at some point set-up git and fetch repository from git


# Provides cached layer for node_modules
ADD package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /home/image-resizer && cp -a /tmp/node_modules /home/image-resizer/

#bundle source code into image
COPY . /home/image-resizer

为什么不将所需变量作为环境变量传递,如使用?的or
-e
中所述?

为什么不将所需变量作为环境变量传递,如使用?的or
-e
中所述?

您可以使用ENV在docker中设置环境变量。比如说

ENV PORT=9000
ENV LANG=en_US.utf8

但是,Dockerfile中不应嵌入机密信息,您可以使用-e参数传递,也可以使用文本文件并通过--env file参数传递给docker。当summit转换为SVN或git时,您应该忽略文本文件。

您可以使用ENV在docker中设置环境变量。比如说

ENV PORT=9000
ENV LANG=en_US.utf8

但是,Dockerfile中不应嵌入机密信息,您可以使用-e参数传递,也可以使用文本文件并通过--env file参数传递给docker。当使用SVN或git时,应该忽略文本文件。

我认为关于环境变量的答案是很好的解决方案。要提供替代方案,或者如果您使用文件进行aws身份验证,则可以使用docker卷装载这些文件

将主机目录装载为数据卷

除了使用-v标志创建卷外,还可以将目录从Docker守护进程的主机装载到容器中

注意:如果您使用的是Boot2Docker,那么Docker守护进程只能有限地访问OSX/Windows文件系统。Boot2Docker尝试自动共享您的/Users(OSX)或C:\Users(Windows)目录,因此您可以使用docker run-v/Users/:/…装载文件或目录。。。(OSX)或docker run-v/c/Users/:/ 取自


这个解决方案有一个缺点,即假设config文件夹位于固定位置。

我认为关于环境变量的答案是很好的解决方案。要提供替代方案,或者如果您使用文件进行aws身份验证,则可以使用docker卷装载这些文件

将主机目录装载为数据卷

除了使用-v标志创建卷外,还可以将目录从Docker守护进程的主机装载到容器中

注意:如果您使用的是Boot2Docker,那么Docker守护进程只能有限地访问OSX/Windows文件系统。Boot2Docker尝试自动共享您的/Users(OSX)或C:\Users(Windows)目录,因此您可以使用docker run-v/Users/:/…装载文件或目录。。。(OSX)或docker run-v/c/Users/:/ 取自

但是,此解决方案的缺点是假设配置文件夹位于固定位置