小编Jen*_*a S的帖子

npm install 在 Docker 中不起作用

这是我的 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 在构建时不起作用,但在运行时起作用?

npm docker

8
推荐指数
1
解决办法
3万
查看次数

使用 docker 设置 puma、rails 和 nginx 的正确方法是什么?

我有一个使用 Puma 的 Rails 应用程序。我正在使用 nginx 进行负载平衡。我想进行 dockerize 并部署到 DigitalOcean (Docker) Droplet。

在阅读了大量博客和示例之后(其中大部分已有一年的历史,这在 Docker 世界中已经很长时间了),我仍然对两件事感到困惑。假设我选择了带有 4 个 CPU 的 DigitalOcean 盒子。我应该如何设置 Rails 容器?我应该设置 4 个不同的容器,其中 Puma 配置有 1 个工作进程吗?或者我应该设置 1 个容器,其中 Puma 配置有 4 个工作进程?

我感到困惑的第二件事是:我应该在 Rails 容器内运行 nginx,还是应该在单独的容器中运行它们?

这 2 个问题允许 4 种排列,如下图所示。

选项1 选项1

选项2 选项2

选项3 选项3

选项4 选项4

ruby-on-rails docker

7
推荐指数
1
解决办法
2721
查看次数

BDR对于制作Postgres同步有多好?

我有一个系统,多个卫星创建金融交易,他们需要与核心服务器同步.卫星是使用本地Postgres数据库运行Rails应用程序的远程服务器.核心是另一个拥有自己的Postgres数据库的Rails应用程序.卫星和核心具有几乎相同的模式(但不完全相同).一切都是集装箱化的(应用程序和数据库).核心服务器很少更新所有卫星所需的数据.目前我有一颗卫星,但这个数字会增长到一对(我认为在遥远的未来不会超过100颗).核心和卫星之间没有序列或争用的问题.核心将永远不会更新与任何卫星相同的交易,并且任何卫星都不会更新与任何其他卫星相同的交易.更好的是,金融交易以uuid为主键.

由于这是一个多主同步问题,我自然而然地遇到了BDR.我有以下问题:

  1. BDR生产准备好并且稳定吗?我正在阅读几种竞争技术(如Bucardo和Londiste).它真的会成为Postgres 9.6的一部分吗?
  2. BDR可以处理断开连接的模型吗?我不认为这种情况经常发生,但我的卫星可能会断开几个小时.
  3. BDR可以进行选择性同步吗?例如,我只想要同步某些表.
  4. BDR可以处理100颗卫星吗?

postgresql database-design postgresql-bdr

6
推荐指数
1
解决办法
2304
查看次数

schema.rb 中的随机更改

我几个月来就注意到了这一点,但直到现在我才没有时间处理它。每当我的 CI 服务器自动执行git pull并重新启动 Rails 服务器时,它们schema.rb都会被随机修改。如下例所示,api_name某个表的列被删除。大约三个月前我放弃了这个专栏。与 相同transportation_charges。通常,该文件中的间距会发生变化:请参阅created_atupdated_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)

ruby-on-rails ruby-on-rails-4

5
推荐指数
1
解决办法
1474
查看次数

Angular2上的braintree

我正在尝试使用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'

我究竟做错了什么?

braintree angular

3
推荐指数
1
解决办法
3270
查看次数