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