我正在尝试建立一个Gitlab Ci管道,可以在其中测试我的nodejs应用程序。问题是,该应用程序无法连接到数据库。我试图像这里配置一切。我真的不知道为什么它找不到数据库,也找不到任何其他示例或资源。问题是,该应用程序需要数据库运行,否则它将停止。
对于使用typeorm的数据库连接即时消息:
"type": "mysql",
"host": "db",
"port": 3306,
"username": "root",
"password": "logistics",
"database": "logistics",
"synchronize": true,
"logging": true,
"entities": [
"src/entity/**/*.ts"
],
"migrations": [
"src/migration/**/*.ts"
],
"subscribers": [
"src/subscriber/**/*.ts"
],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
这是我的gitlab.yml:
# https://hub.docker.com/r/library/node/tags/
image: node:13
variables:
# Configure mysql environment variables (https://hub.docker.com/_/mysql/)
MYSQL_DATABASE: "logistics"
MYSQL_ROOT_PASSWORD: "logistics"
MYSQL_USER: "paramedic"
MYSQL_PASSWORD: "logistics"
MYSQL_PORT: "3306"
# Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-a-service
services:
- name: mysql:5.7
# http://docs.gitlab.com/ce/ci/yaml/README.html#cache
cache:
paths:
- backend/node_modules/
test_backend:
script:
- cd backend/
- yarn install
- yarn start
这是错误消息:
$ yarn start
yarn run v1.22.4
warning package.json: No license field
$ ts-node-dev --project=tsconfig.json --transpileOnly --respawn src/index.ts
Using ts-node version 8.10.2, typescript version 3.9.2
Error: getaddrinfo ENOTFOUND db
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26)
--------------------
at Protocol._enqueue (/builds/stjorueh/rettungsdienstverwalter/backend/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/builds/stjorueh/rettungsdienstverwalter/backend/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at PoolConnection.connect (/builds/stjorueh/rettungsdienstverwalter/backend/node_modules/mysql/lib/Connection.js:116:18)
at Pool.getConnection (/builds/stjorueh/rettungsdienstverwalter/backend/node_modules/mysql/lib/Pool.js:48:16)
at /builds/stjorueh/rettungsdienstverwalter/backend/src/driver/mysql/MysqlDriver.ts:884:18
at new Promise (<anonymous>)
at MysqlDriver.createPool (/builds/stjorueh/rettungsdienstverwalter/backend/src/driver/mysql/MysqlDriver.ts:881:16)
at MysqlDriver.<anonymous> (/builds/stjorueh/rettungsdienstverwalter/backend/src/driver/mysql/MysqlDriver.ts:343:36)
at step (/builds/stjorueh/rettungsdienstverwalter/backend/node_modules/tslib/tslib.js:139:27)
at Object.next (/builds/stjorueh/rettungsdienstverwalter/backend/node_modules/tslib/tslib.js:120:57) {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'db',
fatal: true
}
尝试不用mysql
作数据库主机db
。您可以在此处阅读说明:https : //docs.gitlab.com/ee/ci/docker/using_docker_images.html#how-services-are-linked-to-the-job
另外,您可以为mysql服务指定别名
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句