Docker 如何用sed替换文件内容

Docker 如何用sed替换文件内容,docker,sed,dockerfile,Docker,Sed,Dockerfile,我正试图在docker上构建一个nodejs应用程序。 我有以下文件 --Dockerfile FROM mhart/alpine-node:12 RUN echo -e "http://nl.alpinelinux.org/alpine/v3.5/main\nhttp://nl.alpinelinux.org/alpine/v3.5/community" > /etc/apk/repositories RUN apk add --no-cache make gcc

我正试图在docker上构建一个nodejs应用程序。 我有以下文件

--Dockerfile
FROM mhart/alpine-node:12

RUN echo -e "http://nl.alpinelinux.org/alpine/v3.5/main\nhttp://nl.alpinelinux.org/alpine/v3.5/community" > /etc/apk/repositories

RUN apk add --no-cache make gcc g++ python git
USER root

RUN apk --update add bash
RUN apk add dos2unix --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/community/ --allow-untrusted

COPY . /app
WORKDIR /app

RUN rm -rf ./docker-entrypoint.sh
COPY docker-entrypoint.sh /
RUN dos2unix /docker-entrypoint.sh
RUN chmod 777 -R /docker-entrypoint.sh
RUN npm install -g npm@6.14.5

RUN npm -v
RUN node -v

RUN npm install

RUN rm -rf ./config/test.json
COPY config/test.json ./config/test.json

RUN rm -rf /var/cache/apk/*
EXPOSE 3001
ENTRYPOINT [ "/docker-entrypoint.sh"]
# CMD npm start
ENTRYPOINT npm start
这是我在Docker中的config/test.json输出文件

"mongo" : "${MONGO}",
test.json的内容尚未更改

谁能告诉我哪里出了问题?
请告诉我如何修理它。谢谢大家!

在这种特殊情况下,是您在
之前的间距

请尝试
sed-e“s/\“mongo\”:\“\${mongo}\”/“mongo\”:\“$mongoDB\”/g”-i$config

这里可能不适用,但您也可以使用regex:
sed-e“s/\“mongo\”[]*:[]*\“\${mongo}\”/\“mongo\”:\“$mongoDB\”/g”-i$config

入口点[“/docker ENTRYPOINT.sh”]
入口点npm启动

定义多个入口点时,请参见:

只有Dockerfile中的最后一条入口点指令才会生效


这意味着只有
npm start
make effect,您的
docker entrypoint.sh
甚至没有运行…

请提取a并提供它。这里有很多实际上是不必要的。顺便说一句,不要将每个命令放在单独的运行指令中。Dockerfile中的每条指令都会生成一个新层,特别是,这意味着您的apk缓存实际上不会从映像中删除。此外,它还为图像增加了不必要的复杂性,并为图像添加了额外的元数据。在可能的情况下,更好的连锁指挥。这就是为什么我不能更改文件内容的原因。非常感谢。
"mongo" : "${MONGO}",