这是我的 Dockerfile:
FROM node:7
RUN apt-get update && apt-get install -y --no-install-recommends \
rubygems build-essential ruby-dev \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -gq gulp bower
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN npm install
CMD ["gulp", "start:dev"]
Run Code Online (Sandbox Code Playgroud)
当我构建镜像时,npm install 命令的执行速度非常快,输出很少。我实际上是通过 docker-compose 构建它的,它确实安装了一个卷 - 而且我看不到在我的软管上创建的 node_modules 文件夹。当我在此映像上启动容器时,我可以看到没有 node_modules 文件夹。然后我执行 npm install ,一切开始工作 - 安装所有包需要 2-3 分钟,并且确实创建了 node_modules 文件夹。
这里发生了什么?我究竟做错了什么?为什么 npm install 在构建时不起作用,但在运行时起作用?
我有一个使用 Puma 的 Rails 应用程序。我正在使用 nginx 进行负载平衡。我想进行 dockerize 并部署到 DigitalOcean (Docker) Droplet。
在阅读了大量博客和示例之后(其中大部分已有一年的历史,这在 Docker 世界中已经很长时间了),我仍然对两件事感到困惑。假设我选择了带有 4 个 CPU 的 DigitalOcean 盒子。我应该如何设置 Rails 容器?我应该设置 4 个不同的容器,其中 Puma 配置有 1 个工作进程吗?或者我应该设置 1 个容器,其中 Puma 配置有 4 个工作进程?
我感到困惑的第二件事是:我应该在 Rails 容器内运行 nginx,还是应该在单独的容器中运行它们?
这 2 个问题允许 4 种排列,如下图所示。
我有一个系统,多个卫星创建金融交易,他们需要与核心服务器同步.卫星是使用本地Postgres数据库运行Rails应用程序的远程服务器.核心是另一个拥有自己的Postgres数据库的Rails应用程序.卫星和核心具有几乎相同的模式(但不完全相同).一切都是集装箱化的(应用程序和数据库).核心服务器很少更新所有卫星所需的数据.目前我有一颗卫星,但这个数字会增长到一对(我认为在遥远的未来不会超过100颗).核心和卫星之间没有序列或争用的问题.核心将永远不会更新与任何卫星相同的交易,并且任何卫星都不会更新与任何其他卫星相同的交易.更好的是,金融交易以uuid为主键.
由于这是一个多主同步问题,我自然而然地遇到了BDR.我有以下问题:
我几个月来就注意到了这一点,但直到现在我才没有时间处理它。每当我的 CI 服务器自动执行git pull
并重新启动 Rails 服务器时,它们schema.rb
都会被随机修改。如下例所示,api_name
某个表的列被删除。大约三个月前我放弃了这个专栏。与 相同transportation_charges
。通常,该文件中的间距会发生变化:请参阅created_at
和updated_at
。
这尤其令人烦恼,因为在下次运行时,当我的 CI 执行初始操作时git pull
,它会抱怨更改schema.rb
并停止执行,直到它们被推送或恢复。而且不仅仅是 CI 服务器。我也在其他开发者机器上看到过这种情况。以前有人遇到过这个吗?
diff --git a/db/schema.rb b/db/schema.rb
index 470d3bf..166e3ee 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -883,7 +883,6 @@ ActiveRecord::Schema.define(version: 20170720211740) do
create_table "ups_package_service_options", force: :cascade do |t|
t.string "name"
- t.string "api_name"
t.string "type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
@@ -910,9 +909,8 @@ ActiveRecord::Schema.define(version: 20170720211740) do
t.string "code"
t.string "name"
t.string …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Angular2上的Braintree客户端示例(https://developers.braintreepayments.com/start/hello-client/javascript/v3).我是Angular2(和Javascript)的新手.
首先,我不确定我是否应该在package.json的依赖项下添加"braintree-web":"^ 3.6.3".或者添加
<script src="https://js.braintreegateway.com/web/3.6.3/js/client.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
和
<script src="https://js.braintreegateway.com/web/3.6.3/js/hosted-fields.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
在index.html下.我最终做了两件事.
运行npm install之后,如果我查看node_modules/braintree-web,我只看到.js文件.我没有看到任何ts文件.这是一个问题吗?我不应该使用braintree-web吗?这个包是为Angular1编写的吗?如果我确实必须使用braintree-web,我是否还需要在index.html中包含这些2个js文件?不是braintree-web已经包含它们了吗?
在我的payment.component.ts文件中,我复制并粘贴了Braintree客户端代码:
import { braintree } from 'braintree-web/client';
...
ngOnInit() {
var authorization = '...';
var submit = document.querySelector('input[type="submit"]');
braintree.client.create({
authorization: authorization
}, function (clientErr, clientInstance) {
if (clientErr) {
Run Code Online (Sandbox Code Playgroud)
当我尝试运行tsc时,我收到以下错误:
app/admin/user/payment.component.ts(3,27):错误TS2307:找不到模块'braintree-web/client'
我究竟做错了什么?