docker构建中的访问卷
我正在使用docker compose并创建了一个卷。我有多个容器。我面临在docker容器中运行命令的问题。 我有NodeJS容器,它有单独的前端和后端文件夹。我需要在这两个文件夹中运行npm安装docker构建中的访问卷,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我正在使用docker compose并创建了一个卷。我有多个容器。我面临在docker容器中运行命令的问题。 我有NodeJS容器,它有单独的前端和后端文件夹。我需要在这两个文件夹中运行npm安装 version: '2' services: ### Applications Code Container ############################# applications: image: tianon/true volumes:
version: '2'
services:
### Applications Code Container #############################
applications:
image: tianon/true
volumes:
- ${APPLICATION}:/var/www/html
node:
build:
context: ./node
volumes_from:
- applications
ports:
- "4000:30001"
networks:
- frontend
- backend
这是节点的docker文件
FROM node:6.10
MAINTAINER JC Gil <sensukho@gmail.com>
ENV TERM=xterm
ADD script.sh /tmp/
RUN chmod 777 /tmp/script.sh
RUN apt-get update && apt-get install -y netcat-openbsd
WORKDIR /var/www/html/Backend
RUN npm install
EXPOSE 4000
CMD ["/bin/bash", "/tmp/script.sh"]
来自节点:6.10
维修员JC Gil
环境术语=xterm
添加script.sh/tmp/
运行chmod 777/tmp/script.sh
运行apt get update&&apt get install-y netcat openbsd
WORKDIR/var/www/html/Backend
运行npm安装
曝光4000
CMD[“/bin/bash”,“/tmp/script.sh”]
我的workdir为空,因为location/var/www/html/Backend在构建时不可用,但在我的所有者启动时可用。因此,我的命令npm install dot work运行是一个映像构建步骤,在构建时卷尚未连接。 我认为您必须在CMD中执行npm安装 您可以尝试在/tmp/script.sh中添加
npm安装
让我知道您可能想做的是将添加
或复制
包.json
文件到正确的位置,运行npm install
,然后添加
或将源代码的其余部分复制到映像中。这样,docker build
将仅在需要时重新运行npm install
在单独的容器中运行前端和后端可能会更好,但如果这不是一个选项,则完全可以为每个应用程序运行ADD package.json
-运行npm install
-ADD.
一次。正如Tomas Lycken提到的那样,复制文件,然后运行npm install。我将前端和后端的容器分开。最重要的是前端和后端的节点模块。需要在服务中将它们创建为卷,以便在创建容器时它们可用
version: '2'
services:
### Applications Code Container #############################
applications:
image: tianon/true
volumes:
- ${APPLICATION}:/var/www/html
- ${BACKEND}:/var/www/html/Backend
- ${FRONTEND}:/var/www/html/Frontend
apache:
build:
context: ./apache2
volumes_from:
- applications
volumes:
- ${APACHE_HOST_LOG_PATH}:/var/log/apache2
- ./apache2/sites:/etc/apache2/sites-available
- /var/www/html/Frontend/node_modules
- /var/www/html/Frontend/bower_components
- /var/www/html/Frontend/dist
ports:
- "${APACHE_HOST_HTTP_PORT}:80"
- "${APACHE_HOST_HTTPS_PORT}:443"
networks:
- frontend
- backend
node:
build:
context: ./node
ports:
- "4000:4000"
volumes_from:
- applications
volumes:
- /var/www/html/Backend/node_modules
networks:
- frontend
- backend
这样做,我有前端,banckend和另一个文件夹。所以在所有文件夹和前端bower安装中都有npm安装。每次都需要花费大量的时间来安装容器。