gpt4 book ai didi

docker - 当我的开发环境将我的代码库挂载到容器中时,如何构建 docker 镜像?

转载 作者:行者123 更新时间:2023-12-01 12:24:53 31 4
gpt4 key购买 nike

我对我的应用程序进行了 docker 化,但为了查看我的更改,我必须重建我的图像,它不会给我应用程序的实时预览。

所以我创建了一个 docker-compose 环境,它将 redis 链接到我的节点容器,然后将源代码从主机挂载到节点应用程序并观察它的变化。但是,由于代码不是 UnionFS 的一部分,因此无法容器化。

如何设置可以生成 dockerized 图像但不必在每次更改代码库时都重新启动的开发环境?

最佳答案

您用于开发和挂载目录的容器镜像应该与您为在其他地方运行应用程序而生成的镜像相同,或者如果无法实现,至少基于生产镜像。

以一个简单的节点应用为例,这里是基本图像:

FROM node:6
ENV NODE_ENV=production
RUN npm install forever -g
COPY docker-entrypoint.sh /entrypoint.sh
WORKDIR /app
COPY package.json /app/
RUN npm install
COPY . /app
EXPOSE 3000
ENTRYPOINT ["/entrypoint.sh"]
CMD ["node", "/app/index.js"]

制作

docker run \
--detach \
--restart always \
--publish 3000:3000 \
myapp

发展

docker run \
--publish 3000:3000 \
--volume .:/app \
--env NODE_ENV=development \
myapp \
forever -w /app/index.js

所以我修改了坐骑,但基本图像是一样的。安装的文件替换容器中的“构建”文件。

对于 node.js 应用程序,有一些额外的开发更改。环境变量和用于监视/重新启动更改过程的命令。当您更改 package.json.

开发Dockerfile

如果您需要对开发环境进行大量修改并且不想手动指定它们,您可以创建一个开发镜像 FROM 包含开发细节的基础镜像。 Dockerfile.dev:

from myapp:latest
env NODE_ENV=development
volume ["/app"]
command ["forever", "-w", "--watchDirectory", "/app" "/app/index.js"]

然后开发细节存储在新图像中,但仍链接到您的真实图像。

docker build -f Dockerfile.dev -t myapp-dev .
docker run -p 3000:3000 -v .:/app myapp-dev

关于docker - 当我的开发环境将我的代码库挂载到容器中时,如何构建 docker 镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40914696/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com