我想读取Dockerfile中的port
变量,该变量在.env
文件中定义。有什么办法可以做到这一点吗?
这是我的DockerFile:
FROM node:11-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ENV PORT=3000
COPY . .
RUN npm install
EXPOSE 3000
CMD ["npm", "run", "start"]
已更新
在一次聊天中讨论后,我们意识到nodejs应用程序容器没有问题,问题来自错误配置的nginx代理。
下一个docker-compose文件就是nodejs应用程序正常运行的证明。
version: "3"
services:
api:
build: .
curl:
image: curlimages/curl:7.70.0
depends_on:
- api
entrypoint: ""
command: curl -si --retry 5 --retry-delay 5 --retry-max-time 40 http://api:6000
restart: on-failure
docker build --build-arg APP_PORT=3000
FROM node:11-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ARG APP_PORT=80
EXPOSE ${APP_PORT}
COPY . .
RUN APP_PORT=${APP_PORT} npm install
CMD APP_PORT=${APP_PORT} npm run start
无论如何,如果您在expose
中有不同的端口,并且您的应用程序监听--它不会破坏任何东西,那么应用程序的端口将在您想要的端口上可用,尽管它没有在expose
中指定。
您甚至可以跳过文件中的expose
,因为它更像是映像的元数据信息,而不是系统打开端口的指令:https://docs.docker.com/engine/reference/builder/#expose
无论公开设置如何,您都可以在运行时使用-p标志重写它们。
如果您的映像在构建后是静态的(您不打算更改.env),您可以下一步执行,那么npm install
和npm run start
具有相同的env。您仍然可以稍后更改端口,但不会影响npm安装。
FROM node:11-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . .
RUN export $(cat .env) && npm install
CMD export $(cat .env) && npm run start
如果必须将cmd
保留为数组,那么我们需要创建一个引导脚本
FROM node:11-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . .
RUN export $(cat .env) && npm install
RUN echo '#!/usr/bin/env sh' > start.sh && echo 'export $(cat .env) && npm run start ${@}' >> start.sh
CMD ["sh", "./start.sh"]
问题内容: 我有一个文件,称之为。 有没有一种方法可以“读取”其中的内容,并获取其中的所有类的列表作为完整的类名,包括其包,例如? 我在考虑,但是似乎找不到用于检索整个类集的方法。 问题答案: 您可以将dexlib2库用作独立库(在maven中可用),以读取dex文件并获取类列表。 请注意,类名将采用“ Ljava / lang / String;”的形式,这就是它们如何存储在dex文件(和Jav
我正在做一个项目,需要遍历文件系统,从pdf中提取文本,然后扫描文本。以前,文件系统是一个N驱动器(充当本地文件系统),因此使用java文件API,我可以访问每个pdf文件。使用此方法,我将提取文本: 从这里,我可以扫描文本。 我现在需要这样做,但使用dropbox文件系统。但是,我只能找到一种方法来获取每个文件的元数据,而不是实际的文件,因此我可以提取文本。 有没有办法获取文件,以便我可以在文件
我正在尝试dockerize一个基本的nodejs应用程序。我的dockerfile如下 但我总是收到同样的错误 我该怎么解决?
问题内容: 我喜欢新的Java8 StreamAPI,并希望不仅将其用于一个文件。通常,我使用以下代码: 但是,如果可能的话,如何在一个流中读取两个文件呢? 问题答案: 没有任何额外的帮助程序功能或外部库,最简单的方法是: 如果尚未声明抛出受检查的异常,则可以 但是,a,我们不能这样做。有几种解决方法。一种是制作自己的版本,将其称为标准版本,然后将其作为捕获并重新抛出。另一种方法是使用抛出检查异常
问题内容: 它似乎没有该属性,但是对我来说真的很有用。 问题答案: 你必须改变状态的的小部件从到 之后 进入或:
问题内容: 给定一个JSON文件,: 我可以在shell中阅读using 并分别初始化变量: 有没有办法读取JSON文件中的所有键值对,然后在shell中相应地初始化所有变量? 问题答案: 您可以遍历键/值对,并用于动态创建变量名。