如何使用 Github-actions 在 Docker 上使用 Mysql 运行 Prisma 迁移

Posted

技术标签:

【中文标题】如何使用 Github-actions 在 Docker 上使用 Mysql 运行 Prisma 迁移【英文标题】:How to run a Prisma migration with Mysql on Docker with Github-actions 【发布时间】:2022-01-07 09:29:39 【问题描述】:

我的应用程序使用 Docker 运行 mysql 数据库,并使用 Prisma 连接到它。我正在编写一个 gh-action,它会在每次推送后测试应用程序。我已按照本指南here 了解如何在 gh-actions 上运行 docker。我也在用act 测试这个动作。

我的 .github/workflows/main.yml 看起来像这样:

name: NestJS CI/CD

on:
  push:
    branches:
      - feature/gh-actions

jobs:
  runner-job:
    runs-on: ubuntu-latest

    container: node:latest

    services:
      mysql:
        image: mysql
        ports:
          - '3306:3306'
        env:
          MYSQL_ROOT_PASSWORD: password
          MYSQL_DATABASE: db
        options: >-
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - name: Check out repository code
        uses: actions/checkout@v2

      - name: Install dependencies
        run: npm ci

      - name: Apply migrations
        run: npx prisma migrate dev
        env:
          DATABASE_URL: mysql://root:password@mysql:3306/db

      - name: Apply seed
        run: npx prisma db seed

      - name: Test the project
        run: npm run test

但我不断得到:

| Error: P1001: Can't reach database server at `mysql`:`3306`

我错过了什么吗?

【问题讨论】:

【参考方案1】:

我可能错了,但我认为你应该这样做

DATABASE_URL: mysql://root:password@localhost:3306/db?

【讨论】:

【参考方案2】:

对于任何坚持同一件事的人。为了让行为识别连接,您应该使用localhost 而不是mysql。同时,当您在 github 上实际使用它时,这将不起作用,您必须在这种情况下使用 mysql。真的很令人沮丧,因为您必须更改某些内容才能在本地进行测试,这在开发过程中毫无意义。也许我错过了一些行为

【讨论】:

以上是关于如何使用 Github-actions 在 Docker 上使用 Mysql 运行 Prisma 迁移的主要内容,如果未能解决你的问题,请参考以下文章

[,foreach和github-actions中的其他循环

利用GitHub-Actions将Hugo博客自动发布到GitHub和Gitee Pages

vue-cli3携手rollup、github-actions打造自动部署的vue组件模板(使用篇)

如何在关联数组中使用 PHP here-doc?

如何使用来自完全不同的 Googlesheet/doc 的范围使用 Sumif

如何使用 GetFiles() 搜索包含 doc 文件但排除 docx 文件?