小编Tuo*_*nen的帖子

如何在Docker Compose中使容器等待其他容器

我正在按照教程尝试使用Docker Compose而不是调用docker client的shell脚本来启动基础结构.一切正常,除了gitlab容器在gitlab-postgreql和gitlab-redis之前启动,因此失败,因为它预计这些服务已经在运行.

我尝试使用depends_on属性,但它没有解决问题.据我所知,如果其他容器的启动速度更快,则无济于事.经过我的研究,Docker Compose没有提供开箱即用的解决方案来控制容器创建顺序.

怎么会这样?我无法相信这样一个基本功能没有实现.看起来Docker正在绊倒它自己的聪明才智并忘记了基础知识.现在,如何在没有一些疯狂的支持脚本的情况下控制容器创建顺序(这会使整个配置更混乱,而不仅仅是首先使用脚本/ docker客户端来处理所有内容)

这是docker-compose.yml

version: '2'
services:

  gitlab-postgresql:
    image: sameersbn/postgresql:9.4-3
    volumes:
      - /srv/docker/gitlab/postgresql:/var/lib/postgresql
    environment:
      - DB_NAME=gitlabhq_production
      - DB_USER=gitlab
      - DB_PASS=password

  gitlab-redis:
    image: sameersbn/redis:latest
    volumes:
      - /srv/docker/gitlab/redis:/var/lib/redis
    depends_on:
      - "gitlab-postgresql"

  gitlab:
    image: sameersbn/gitlab:7.14.3
    volumes:
      - /srv/docker/gitlab/gitlab:/home/git/data
    ports:
      - "2222:22"
      - "8080:80"
    environment:
      - GITLAB_PORT=8080
      - GITLAB_SSH_PORT=2222
    depends_on:
      - gitlab-postgresql
      - gitlab-redis

  registry:
    image: registry:2
    volumes:
      - /srv/docker/registry/data:/var/lib/registry
    ports:
      - "5000:5000"
    depends_on:
      - "gitlab"

  jenkins:
    image: jenkins:1.609.3
    volumes:
      - /srv/docker/jenkins/home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock …
Run Code Online (Sandbox Code Playgroud)

deployment configuration containers docker docker-compose

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

HTML 名称标签

是否可以使用for元素名称的 label 属性而不是id?我们的应用程序存在一个错误,两个复选框具有相同的 id,单击一个复选框的标签会检查另一个复选框。由于 HTML 生成逻辑丑陋且复杂,更改 id 会很痛苦。

然而,这两个复选框都有一个唯一的名称属性,使用for这个名称的标签将是一个快速的解决方案。这可能吗?

html javascript

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

从技术角度来看git index到底是什么

我一直认为git index只是一个临时区域,即 当git commit之后什么也没有上演时,index为空,其中head为从head到达的所有先前提交索引的总和。

显然,这种心态是错误的,关于如何git reset --soft <ref>根据doc保存索引。当我从干净的工作目录软重置为较早的提交时,较晚的提交中引入的更改将自动进行,即添加到索引中。更准确地说,它们没有添加到当前提交的索引上,但是整个索引都已传输。

这是否意味着干净提交目录的索引实际上包含前一次提交的更改,以及头部是否包含?提交是否确实提交了head和index之间的差异?工作目录的整洁和差异是否意味着索引的差异,而不是头部的差异?索引作为数据结构到底是什么,它是如何进行git addgit commit更改的?提交后如何演变提交,它与快照和增量的概念有何关系?

git

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

Git,在 rebase 上撤消合并提交

我有一段历史,看起来有点像以下

  * (TOPIC) topic 3
  |
| * merge master onto topic
|/|
* | master 3
| * topic 2
* | master 2
| | 
| * topic 1
|/
* master 1
|
Run Code Online (Sandbox Code Playgroud)

即上游分支合并到主题一次。现在我想在同一个基础上以交互方式重新设置这个主题分支,但撤消合并(合并提交本身和合并引入的 master 的所有提交)。这怎么可能?

git merge rebase

3
推荐指数
2
解决办法
3462
查看次数

java.lang.AbstractMethodError:org.apache.activemq.ActiveMQConnection.createSession

我正在尝试使用 Spring、Camel 和 ActiveMQ 来模拟具有两个不同 JMS 代理的简单消息传递模式。这是我尝试使用的路线。

@Component("testRouteBuilder")
public class CamelRouteBuilder extends RouteBuilder {

    @Autowired
    @Qualifier("jmscf2")
    private ConnectionFactory jmsServer2;

    @Override
    public void configure() throws Exception {

        from("timer://foo?delay=2000")
            .setBody(simple("hello"))
            .log("request: ${body}")
            .to("bean://jmsbean")
            .log("reply: ${body}");

        from("jms1://queue:dest")
            .log("got message: ${body}")
            .log("headers: ${headers}")
            .setBody(constant("reply"))
            .process(new Processor() {
                @Override
                public void process(Exchange arg0) throws Exception {
                    Connection connection = jmsServer2.createConnection();
                    connection.start();
                    Session session = connection.createSession(Session.AUTO_ACKNOWLEDGE);
                    TextMessage inMsg = arg0.getIn().getBody(TextMessage.class);
                    MessageProducer producer = session.createProducer(inMsg.getJMSReplyTo());
                    TextMessage outMsg = session.createTextMessage();
                    outMsg.setJMSCorrelationID(inMsg.getJMSCorrelationID());
                    outMsg.setText("reply");
                    producer.send(outMsg);
                    session.close();
                    connection.close();
                }
            });
    } …
Run Code Online (Sandbox Code Playgroud)

java spring activemq-classic jms apache-camel

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

如何删除 IntelliJ IDEA 中的周围代码块?

在 IntelliJ IDEA 中,是否有快捷方式可以以上下文感知的方式删除选择周围的代码块(控制结构)?在此示例中,我想删除外部 if 块。

改造这个

if (foo) { // Unnecessary if block

  a();

  if (bar) {
    b();
  } else {
    c();
  }
} else {
  d();
}
Run Code Online (Sandbox Code Playgroud)

对此

a();

if (bar) {
  b();
} else {
  c();
}
Run Code Online (Sandbox Code Playgroud)

java keyboard-shortcuts editor intellij-idea

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

ORM 实体与 DDD 实体

我熟悉由服务、实体和存储库组成的典型分层架构。服务操作由存储库保存的带注释的实体类。在这个模型中,实体类只是带有一堆 getter 和 setter 的贫乏数据容器。业务逻辑驻留在过程服务类中(由 spring 容器管理的单例)。

我正在学习 DDD 作为一个业余爱好项目。在 DDD 中,实体形成了一个丰富的域模型,它在聚合根方法(和值对象)中容纳了大部分业务逻辑。服务几乎只是协作实体、存储库和其他服务的协调者。丰富的域模型以真正的 OOP 方式强制执行业务约束和不变量,并提高代码的可维护性。此外,领域模型是六边形架构的核心,这意味着它只是 POJO,不依赖于源代码级别的技术或框架问题。

但 JPA 规范要求实体 bean 应该具有公共 getter 和 setter,本质上是一个贫乏的数据容器,与 DDD 域模型相对立。那么我应该将域逻辑捆绑在 JPA 实体内吗?或者在 DDD 上使用 ORM 时我应该维护两个不同的模型和映射逻辑吗?这些模型和映射逻辑应该位于项目级别的哪里?

java orm spring domain-driven-design jpa

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

为什么git branch和$(git branch)输出不同的结果

我正在尝试制作一个bash脚本,该脚本将在其他分支的当前分支之前打印提交。但是,当我git branch在子shell中执行命令时,不仅获得分支名称,还获得当前目录中的文件和文件夹列表。为什么呼叫的$(git branch)行为方式如此?

unix git bash shell version-control

2
推荐指数
1
解决办法
111
查看次数

Ansible,字段args的值无效

我在playbook.yml中添加了一个名为common的角色,并且配置失败并显示以下消息:

TASK [common : Host is present] ************************************************
==> cd: fatal: [localhost]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'unicode object' has no attribute 'host_ip'\n\nThe error appears to have been in '/vagrant/ansible/roles/common/tasks/main.yml': line 7, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Host is present\n  ^ here\n"}
Run Code Online (Sandbox Code Playgroud)

这是roles/common/tasks/main.yml失败的特定任务的内容

- …
Run Code Online (Sandbox Code Playgroud)

configuration provisioning configuration-management ansible ansible-playbook

2
推荐指数
1
解决办法
7099
查看次数

Bash,subshel​​l输出隐式引用

在下面的例子中

for f in *
do
    res=$(ls -la "$f")
    echo "$res"
done
Run Code Online (Sandbox Code Playgroud)

这是使用引号的正确方法吗?我知道我应该总是引用变量,但是subshel​​l输出是否隐式引用?

linux bash shell

2
推荐指数
1
解决办法
456
查看次数