【发布时间】:2018-02-15 11:53:05
【问题描述】:
在 docker-compose build 命令期间在 Dockerfile 中运行步骤 RUN yarn install 时,我得到:
[1/4] 正在解析包... [2/4] 正在获取包... 信息 fsevents@1.1.3:平台“linux”与该模块不兼容。 info "fsevents@1.1.3" 是一个可选依赖项并且失败了 兼容性检查。从安装中排除它。 [3/4] 链接 依赖项...警告“@rails/webpacker > postcss-cssnext@3.1.0”有 未满足的对等依赖“caniuse-lite@^1.0.30000697”。警告” > webpack-dev-server@2.11.1" 具有未满足的对等依赖关系 "webpack@^2.2.0 || ^3.0.0”。警告“webpack-dev-server > webpack-dev-middleware@1.12.2" 具有未满足的对等依赖关系 “webpack@^1.0.0 || ^2.0.0 || ^3.0.0”。 [4/4] 构建新包...
但未创建 node_modules 文件夹。另一方面,当我运行时
docker-compose run SERVICE_NAME yarn install
我明白了:
[1/4] 正在解析包... [2/4] 正在获取包... 信息 fsevents@1.1.3:平台“linux”与该模块不兼容。 info "fsevents@1.1.3" 是一个可选依赖项并且失败了 兼容性检查。从安装中排除它。 [3/4] 链接 依赖项...警告“@rails/webpacker > postcss-cssnext@3.1.0”有 未满足的对等依赖“caniuse-lite@^1.0.30000697”。警告” > webpack-dev-server@2.11.1" 具有未满足的对等依赖关系 "webpack@^2.2.0 || ^3.0.0”。警告“webpack-dev-server > webpack-dev-middleware@1.12.2" 具有未满足的对等依赖关系 “webpack@^1.0.0 || ^2.0.0 || ^3.0.0”。 [4/4] 构建新包...
然后文件夹 node_modules 它是在项目文件夹中创建的。
我只是不明白为什么......我期待相同的功能,但我错过了一些东西。
这里是我的 docker-compose 服务
services:
ruby:
build:
context: .
dockerfile: docker/ruby/Dockerfile
networks:
- some-network
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- mysql
command: bundle exec rails s -p 3000 -b '0.0.0.0'
Dockerfile
FROM ruby:2.5
# Install dependencies:
# - build-essential: To ensure certain gems can be compiled
# - nodejs: Compile assets
# - npm: Install node modules
# - yarn: Install & manage node modules [should make npm obsolete]
# - libpq-dev
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && \
apt-get install -qq -y build-essential nodejs yarn \
libpq-dev \
mysql-client
RUN mkdir /app
COPY . /app
WORKDIR /app
# install node dependencies
RUN yarn install
RUN bundle install
【问题讨论】:
-
你确定在第一种情况下 node_modules 文件夹不是在容器内生成的吗?或者您是否有该服务的
volume映射? -
在运行 docker-compose build 之后,我进入容器并且文件夹不存在。我编辑了我的问题,以便向您展示 docker-compose 文件中的服务设置
-
能否也提供
docker/ruby/Dockerfile? -
添加了Dockerfile
-
我看到你已经在 docker-compose 中为
/app路径映射了你的 docker 根路径,所以你不需要在 Dockerfile 中复制。如果要将所有文件复制到容器中,则必须删除 docker-compose 中的volumes部分。
标签: docker docker-compose yarnpkg