jj-*_*-aa 4 docker docker-compose yarnpkg
在docker-compose build命令期间运行步骤RUN yarn安装在Dockerfile中时,我得到:
[1/4]解析包... [2/4]获取包... info 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
Run Code Online (Sandbox Code Playgroud)
我明白了:
[1/4]解析包... [2/4]获取包... info 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'
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
首先根据Dockerfile创建一个图像:
ruby:2.5以从中创建新图像/app/app路径yarn和bundle(图片内部调用方法)之后,将"项目"文件夹"安装"到图像的/app文件夹中,使其与系统根文件夹相同.之后"生成"容器并CMD从Docker文件执行命令(如果存在).
请注意,这不是图像/容器生成流程的详细说明,但希望它可以帮助您解决问题.所以你可以
yarn install在系统中执行,或者使用安装命令创建入口点脚本:entrypoint: ./entrypoint.sh文件示例
如果要"动态"更新源文件(要查看更新而不重建容器),必须使用第二种方式.
在项目目录中创建文件run.sh:
run.sh
#!/bin/sh
echo '--- run yarn install'
yarn install
echo '--- run bundle install'
bundle install
# HERE YOU CAN RUN ANY OTHER SCRIPT BEFORE CONTAINER BUILDING
echo '--- create docker image and up it'
sudo docker-compose up -d --build
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yml
无需改变(保持在您的问题中).
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
WORKDIR /app
Run Code Online (Sandbox Code Playgroud)
要构建和启动容器,只需运行命令:sh run.sh
它将在您的系统中安装节点依赖项,之后将创建容器,该/app文件夹将是您的项目文件夹(在您的系统中),因此您的代码更改将立即生效.
| 归档时间: |
|
| 查看次数: |
12925 次 |
| 最近记录: |