TL; DR - yarn install在一个'中间容器中安装node_modules'并且在构建步骤之后包将消失。
我试图让我的dockerized rails 5.0应用程序使用webpacker。
Dockerfile
FROM our_company_centos_image:latest
RUN yum install wget -y
RUN wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
RUN yum install sqlite-devel yarn -y
RUN mkdir -p $APP_HOME/node_modules
COPY Gemfile Gemfile.lock package.json yarn.lock $APP_HOME/
RUN bundle install --path /bundle
RUN yarn install --pure-lockfile
ADD . $APP_HOME
当纱线安装运行时,它会安装软件包,然后立即安装
Removing intermediate container 67bcd62926d2
在容器之外,运行ls node_modules显示一个空目录,并且由于模块不存在而运行webpack_dev_server时,docker-compose up进程最终会失败。
我做过各种各样的事情链接将node_modules添加为docker-compose.yml中的一个卷,没有效果。
HAS唯一能做的就是在本地运行yarn install来构建目录,然后在目录中再次执行,但是后来我得到了OS X版本的软件包,最终可能会导致问题。
我在这里做错了什么?
搬运工-compose.yml
version: '2'
services:
web:
build: .
network_mode: bridge
environment:
WEBPACK_DEV_SERVER_HOST: webpack_dev_server
links:
- webpack_dev_server
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- ./node_modules:/app/node_modules
- .:/app
ports:
- "3000:3000"
tty: true
stdin_open: true
webpack_dev_server:
image: myapp_web
network_mode: bridge
command: bin/webpack-dev-server
environment:
NODE_ENV: development
RAILS_ENV: development
WEBPACK_DEV_SERVER_HOST: 0.0.0.0
volumes:
- .:/app
ports:
- "3035:3035"
答案 0 :(得分:1)
最后一步是node_modules
。您还提到本地树中的node_modules
文件夹为空。这是否意味着node_modules
仍然存在为空文件夹?
如果是这样,那么ADD
空文件夹可能会在yarn
步骤中被复制并覆盖在上一个 In file included from ../include/vrv/att.h:16:
../include/vrv/vrvdef.h:217:26: error: no member named 'tuple' in namespace 'std'
typedef std::vector<std::tuple<Alignment *, Alignment *, int> > ArrayOfAdjustmentTuples;
~~~~~^
../include/vrv/vrvdef.h:217:32: error: 'Alignment' does not refer to a value
typedef std::vector<std::tuple<Alignment *, Alignment *, int> > ArrayOfAdjustmentTuples;
^
../include/vrv/vrvdef.h:195:7: note: declared here
class Alignment;
^
../include/vrv/vrvdef.h:217:43: error: expected expression
typedef std::vector<std::tuple<Alignment *, Alignment *, int> > ArrayOfAdjustmentTuples;
^
../include/vrv/vrvdef.h:217:63: error: expected unqualified-id
typedef std::vector<std::tuple<Alignment *, Alignment *, int> > ArrayOfAdjustmentTuples;
^
In file included from ../src/accid.cpp:17:
../include/vrv/functorparams.h:272:5: error: unknown type name 'ArrayOfAdjustmentTuples'
ArrayOfAdjustmentTuples m_overlapingSyl;
^
步骤中完成的所有内容。
答案 1 :(得分:0)
我有一个Rails 5.2.0.rc1应用,其中webpacker工作在https://github.com/archonic/limestone。它还不是100%正确,但我发现在docker-compose webpacker yarn install --pure-lockfile
之前运行docker-compose up --build
可以在新环境中运行并运行。我还不完全确定为什么在Dockerfile中需要它。
另据我所知,你的web卷应该是- '.:/app'
,而node_modules的语句是多余的。
答案 2 :(得分:0)
我发现的一种解决方案是将node_modules
添加为卷。
例如,如果您的node_modules
目录位于/usr/src/app/node_modules
,只需添加:
volumes:
- /usr/src/app/node_modules