gpt4 book ai didi

node.js - 使用 docker 进行 Node 开发的工作流程

转载 作者:太空宇宙 更新时间:2023-11-03 21:58:55 25 4
gpt4 key购买 nike

我正在开发一个 Web 应用程序,我的开发环境需要 Node。

我不需要一个 docker 生产容器,而是一个开发容器:我需要在 docker 容器和本地开发机器之间共享文件。我不想每次更改源文件时都运行 docker。

目前我的 dockerfile 是:

#React development
FROM node:4.1.1-wheezy
MAINTAINER xxxxx
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get -y install sudo locales apt-utils
RUN locale-gen es_ES.UTF-8
RUN dpkg-reconfigure locales
RUN echo Europe/Madrid | sudo tee /etc/timezone && sudo dpkg-reconfigure --frontend noninteractive tzdata
ADD src/package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /src && cp -a /tmp/node_modules /src/
WORKDIR /src
EXPOSE 3000
VOLUME /src

我需要目录来放置我的所有源文件(通过数据卷共享目录)。我还需要在我的 dockerfile 中执行 npm install,以便我在源目录 (/src/node_modules) 中获取我的 node_modules 目录。

但是,当我将主机目录挂载为数据卷时,由于/src 目录已存在于容器镜像中,其内容将被主机上/src 目录的内容替换,因此我没有/src/node_modules 目录不再:

docker run -it  --volumes-from data-container --name node-dev user/dev-node /bin/bash

我的主机目录没有node_modules目录,因为我通过github获取它并且不同步,因为它是一个相当重的目录。

最佳答案

我的解决方案是使用 ENTRYPOINT 指令复制 node_modules 目录。

docker-entrypoint.sh:

#!/bin/bash
if ! [ -d node_modules ]; then
cp -a /tmp/node_modules /src/
fi
exec "$@"

在 dockerfile 中添加了 2 行:

COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

关于node.js - 使用 docker 进行 Node 开发的工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32830895/

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