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/:/
取自
但是,此解决方案的缺点是假设配置文件夹位于固定位置