Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Oracle预构建的Docker映像作为GitLab CI runner的服务_Oracle_Docker_Gitlab_Gitlab Ci_Gitlab Ci Runner - Fatal编程技术网

使用Oracle预构建的Docker映像作为GitLab CI runner的服务

使用Oracle预构建的Docker映像作为GitLab CI runner的服务,oracle,docker,gitlab,gitlab-ci,gitlab-ci-runner,Oracle,Docker,Gitlab,Gitlab Ci,Gitlab Ci Runner,我目前正在为我们正在运行的几个项目创建一个集成测试管道,这些项目需要Oracle数据库才能工作。为了做到这一点,我使用本文档中提到的说明,完成了创建一个dockerized预构建Oracle数据库的过程 我已经成功地构建了映像,并且我能够验证它是否确实正确工作。我已经将有问题的图像推送到我们的一个定制docker存储库中,并且我还能够成功地从runner的上下文中获取图像 我的主要问题是,当应用程序尝试连接到数据库时,它会失败,并出现连接拒绝错误,就像数据库没有运行一样(请注意,我在本地运行运

我目前正在为我们正在运行的几个项目创建一个集成测试管道,这些项目需要Oracle数据库才能工作。为了做到这一点,我使用本文档中提到的说明,完成了创建一个dockerized预构建Oracle数据库的过程

我已经成功地构建了映像,并且我能够验证它是否确实正确工作。我已经将有问题的图像推送到我们的一个定制docker存储库中,并且我还能够成功地从runner的上下文中获取图像

我的主要问题是,当应用程序尝试连接到数据库时,它会失败,并出现连接拒绝错误,就像数据库没有运行一样(请注意,我在本地运行运行程序是为了测试这一点)。我的问题如下:

integration_test:
  stage: test
  before_script:
    - echo 127.0.0.1 inttests.myapp.com >> /etc/hosts
  services:
    - <repository>/devops/fts-ora-inttests-db:latest
  script:
    - ./gradlew -x:test integration-test:test
  cache:
    key: "$CI_COMMIT_REF_NAME"
    paths:
      - build
      - .gradle
  only:
    - master
    - develop
    - merge_requests
    - tags
  except:
    - api
  • 使用自定义图像时,运行程序公开该图像的名称是什么? 例如,文档说明当我使用
    mysql:latest
    那么公开的服务名称将是
    mysql
    。是这样吗 还有自定义图像吗?我应该给它起个别名吗

  • 我是否需要公开端口/brigde docker网络以获得 这是否正常工作?我失败背后的推理使我陷入困境 相信运行应用程序的映像无法 正确地与Oracle服务通信

  • 有关此作业的my
    gitlab ci.yml
    参考如下:

    integration_test:
      stage: test
      before_script:
        - echo 127.0.0.1 inttests.myapp.com >> /etc/hosts
      services:
        - <repository>/devops/fts-ora-inttests-db:latest
      script:
        - ./gradlew -x:test integration-test:test
      cache:
        key: "$CI_COMMIT_REF_NAME"
        paths:
          - build
          - .gradle
      only:
        - master
        - develop
        - merge_requests
        - tags
      except:
        - api
    
    集成测试: 阶段:测试 在脚本之前: -echo 127.0.0.1 inttests.myapp.com>>/etc/hosts 服务: -/devops/fts-ora-inttests-db:最新版本 脚本: -./gradlew-x:测试集成测试:测试 隐藏物: 关键字:$CI\u COMMIT\u REF\u NAME 路径: -建造 -格雷德尔先生 仅: -主人 -发展 -合并请求 -标签 除: -原料药
    有人能帮忙让它正常工作吗?

    我最近配置了一个
    gitlab ci.yml
    将Oracle docker映像用作
    服务,并使用我们的自定义docker存储库获取映像

    下面我将逐一回答您的问题:


    1.a当使用自定义图像时,运行程序公开该图像的名称是什么?例如,文档说明,当我使用mysql:latest时,公开的服务名称将是mysql。自定义图像也是这样吗

    默认情况下,Gitlab运行程序将根据以下约定[1]推断服务的名称:

    服务主机名的默认别名是按照以下规则从其映像名创建的:

  • 冒号(:)之后的所有内容都被剥离
  • 斜杠(/)替换为双下划线(_u),并创建主别名
  • 斜杠(/)替换为单破折号(-),并创建辅助别名(需要GitLab Runner v1.1.0或更高版本)
  • 因此,在您的情况下,由于您使用的服务名称是
    /devops/fts ora inttests db:latest
    ,因此Gitlab运行程序在默认情况下将生成两(2)个别名

  • \uuuuu devops\uuuu fts-ora\uu inttests-db
  • -devops fts ora inttests db
  • 要连接到您的oracle数据库服务,您需要参考配置文件或源代码中的别名

    e、 g

    database.url=jdbc:oracle:thin@__devops__fts-ora_inttests-db:1521:xe
    //或
    database.url=jdbc:oracle:thin@-devops-fts-ora-inttests-db:1521:xe
    
    1.b我应该给它起个别名吗

    在我看来,您应该为服务声明一个别名,以保持别名的简单性,运行人员将自动使用该别名,并且您可以以相同的方式引用它

    e、 g

    /.gitlab-ci.yml
    服务:
    -名称:/devops/fts或inttests db:latest
    别名:oracle数据库
    //my-app.properties
    database.url=jdbc:oracle:thin@oracle-db:1521:xe
    

    二,。我是否需要公开端口/网桥docker网络以使其正常工作

    是的,将用于服务的Oracle DB docker映像必须在dockerfile中声明端口
    1521
    5500
    ,以便您访问它


    资料来源:

  • // .gitlab-ci.yml
    services:
       - name: <repository>/devops/fts-ora-inttests-db:latest
         alias: oracle-db
    
    // my-app.properties
    database.url=jdbc:oracle:thin@oracle-db:1521:xe