小编SLO*_*OBY的帖子

Docker alpine image的基本命令不起作用

当我使用一些简单的高山容器时,码头工人开始产生奇怪的虫子.其中两个问题是:

  • rc-update 当我试图使用它时没有找到
  • 在安装openssh软件包之后,没有任何内容/etc/ssh或没有/etc/init.d/sshd启动/重新启动服务

为了避免混淆,我检查了一个广泛使用的容器,它充当一个简单的SSH服务器.你可以通过执行:

git clone https://github.com/chamunks/alpine-openssh.git
Run Code Online (Sandbox Code Playgroud)

在此之后进入alpine-openssh目录并使用以下内容构建容器:

docker build -t alpine-openssh .
Run Code Online (Sandbox Code Playgroud)

我的产品如下:

Sending build context to Docker daemon 125.4 kB
Step 1 : FROM alpine
 ---> 4e38e38c8ce0
Step 2 : MAINTAINER Chamunks <Chamunks@gmail.com>
 ---> Running in c21d3fa28903
 ---> f32322a2871a
Removing intermediate container c21d3fa28903
Step 3 : COPY sshd_config /etc/ssh/sshd_config
 ---> 392364fc35ce
Removing intermediate container 4176ae093cb8
Step 4 : ADD https://gist.githubusercontent.com/chamunks/38c807435ffed53583f0/raw/ec868d1b45e248eb517a134b84474133c3e7dc66/gistfile1.txt /data/.ssh/authorized_keys
Downloading [==================================================>]    864 B/864 B
 ---> c3899b675728
Removing …
Run Code Online (Sandbox Code Playgroud)

ssh containers docker alpine-linux

12
推荐指数
1
解决办法
9975
查看次数

Gitlab CI服务端口是如何暴露的?

我有一个.gitlab-ci.yml文件:

integration_test:
  services:
    - name: registry.gitlab.com/group/project/testmailserver:1.1
      alias: "mail.email"
  stage: test
  script:
    - ./gradlew -g /cache/.gradle --stacktrace --info integrationTest
Run Code Online (Sandbox Code Playgroud)

该服务是基于此的完整堆栈电子邮件服务器:tvial/docker-mailserver:latest.在我的docker-compose配置本地,我能够运行它并连接到它.

version: '2'

services:
  mail:
    image: registry.gitlab.com/group/project/testmailserver:1.1
    hostname: mail
    domainname: localhost
    ports:
      - "25:25"
      - "143:143"
      - "587:587"
      - "993:993"
    environment:
      - ONE_DIR=1
      - DMS_DEBUG=0
      - MAIL_USER=invoicereader
      - MAIL_PASS=invoicereader
    cap_add:
      - NET_ADMIN
Run Code Online (Sandbox Code Playgroud)

如果我运行它docker-compose up并通过端口993上的IMAP连接到它,它工作正常.集成测试也顺利进行

但是,如果集成测试由gitlab CI执行,则会失败.我唯一能得到的例外是Connection拒绝.

可能是服务的端口没有正确暴露?CI服务器如何确定它必须向所述服务打开的端口?

使用CI运行时可能出现什么问题?我该如何以不同方式测试?

对不起,很多问题,我只是绝望地失去了..

continuous-integration imap docker gitlab-ci gitlab-ci-runner

11
推荐指数
2
解决办法
1789
查看次数

将已有模型的Ecto模型作为关联插入

我有2个型号,entries:

schema "entries" do
  belongs_to :exception, Proj.Exception
  field :application, :string
end
Run Code Online (Sandbox Code Playgroud)

而且exceptions:

schema "exceptions" do
  field :name, :string
end
Run Code Online (Sandbox Code Playgroud)

迁移脚本:

def change do
  create table(:exceptions) do
    add :name, :string, null: false
  end

  create table(:entries) do
    add :exception_id, references(:exceptions), null: false
    add :application, :string, null: false
  end
end
Run Code Online (Sandbox Code Playgroud)

我的目标是存储在另一个系统中发生的异常.我希望项目能够将每个异常存储在第二个表中(exception如果它们尚不存在),然后将应用程序名称和异常ID存储在第一个表中entries.将有1000个记录entries和少数记录exceptions.

假设entry_params使用此JSON格式:

{
  exception: "NPE",
  application: "SomeApp"
}
Run Code Online (Sandbox Code Playgroud)

应该创建条目的方法:

def create(conn, %{"entry" => entry_params}) do
  exception = Repo.get_by(Exception, name: …
Run Code Online (Sandbox Code Playgroud)

elixir elixir-framework phoenix-framework

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

学习TDD,总是遇到循环依赖

我开始使用TDD来提高我的质量和代码设计,但我经常遇到问题.我将尝试通过一个简单的例子来解释它:我尝试使用被动视图设计实现一个简单的应用程序.这意味着我尽量使视图变得愚蠢.让我们考虑一个应用程序,其中GUI有一个按钮和一个标签.如果用户按下按钮,则会在其中创建一个随机行的文件.然后标签显示创建是否成功.代码可能如下所示:

  • IView接口:单个setter字符串属性:Result
  • GUIEventListener类:从GUI的按钮调用的OnUserButtonClick方法
  • FileSaver类:从GUIEventListener调用的SaveFile方法
  • GUIController类:UpdateLabel方法,它从FileSaver类的SaveFile方法调用,其参数取决于SaveFile方法的成功.

实例化看起来像这样:

  • View的ctor:View(GUIEventListener eventListener)
  • GUIEventListener的ctor:GUIEventListener(FileSaver fileSaver)
  • FileSaver的ctor:FileSaver(GUIController控制器)
  • GUIController的ctor:GUIController(查看视图)

您可以清楚地看到,设计中存在循环依赖关系.我经常试图避免使用事件,我不喜欢用它们进行测试,我认为这种类型的设计更加自我解释,因为它清楚地说明了类的关系.我听说过IoC的设计风格,但我并不熟悉它.

关于这个问题,我在TDD中的"关键点"是什么?我总是遇到这个问题,我想学习一个适当的模式或原则,以避免将来.

c# oop tdd

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

创建多个对象后的REST API POST响应?

我正在创建具有各种属性的任务,并且我将JSON数据从Angular前端传递到基于Java的后端.受让人目前是Task类的属性.一个新的请求来改变行为:用户应该能够在创建新任务时选择多个受理人.

我想要处理的方式是我想创建与传递的受让人数量相同的任务量.因此,如果n个用户与各种任务数据一起传递,则将在DB中为每个用户创建n个任务作为受让人.

以前我只能通过一个受让人,返回POST请求的响应代码如下:

@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response save(TaskInDto taskInDto) {
    // saving to DB, etc... 
    String taskId = createdTask.getId().toString();
    URI taskUri = uriInfo.getAbsolutePathBuilder().path(taskId).build();
    return Response.created(taskUri).build();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是关于REST设计:如果创建了多个对象,我应该将什么作为Result对象返回给用户?

java rest jersey

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