当我使用一些简单的高山容器时,码头工人开始产生奇怪的虫子.其中两个问题是:
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) 我有一个.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
我有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) 我开始使用TDD来提高我的质量和代码设计,但我经常遇到问题.我将尝试通过一个简单的例子来解释它:我尝试使用被动视图设计实现一个简单的应用程序.这意味着我尽量使视图变得愚蠢.让我们考虑一个应用程序,其中GUI有一个按钮和一个标签.如果用户按下按钮,则会在其中创建一个随机行的文件.然后标签显示创建是否成功.代码可能如下所示:
实例化看起来像这样:
您可以清楚地看到,设计中存在循环依赖关系.我经常试图避免使用事件,我不喜欢用它们进行测试,我认为这种类型的设计更加自我解释,因为它清楚地说明了类的关系.我听说过IoC的设计风格,但我并不熟悉它.
关于这个问题,我在TDD中的"关键点"是什么?我总是遇到这个问题,我想学习一个适当的模式或原则,以避免将来.
我正在创建具有各种属性的任务,并且我将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对象返回给用户?