如何在M1 Mac上运行querydsl项目测试



我正在尝试在Github上运行querydsl项目的测试套件(https://github.com/querydsl/querydsl)。按照说明进行构建(我使用"all"配置文件进行构建(后,我安装了Docker和Docker-compose,但当我根据说明运行Docker-compose-up-d时,收到了一条错误消息。

这是运行命令的输出,错误

我在谷歌上搜索了关于linux/arm64/v8的错误消息,但还没能克服这个错误。

为了让测试套件在Mac上运行,我还应该遵循其他特定的步骤吗?

docker-compose.yml:

version: "2.4"
services:
# Provides an easy way to ensure slow-starting databases are ready when the tests run
block-until-healthy:
image: alpine:latest
depends_on:
cubrid:
condition: service_healthy
db2:
condition: service_healthy
sqlserver:
condition: service_healthy
mysql:
image: mysql:5.6.38
ports:
- "3306:3306"
volumes:
- ./db/mysql.sh:/docker-entrypoint-initdb.d/mysql.sh
environment:
- MYSQL_ROOT_PASSWORD=querydsl
- MYSQL_USER=querydsl
- MYSQL_PASSWORD=querydsl
postgresql:
image: mdillon/postgis:9.3-alpine
ports:
- "5433:5432"
volumes:
- ./db/postgresql.sql:/docker-entrypoint-initdb.d/postgresql.sql
environment:
- POSTGRES_USER=querydsl
- POSTGRES_PASSWORD=querydsl
- POSTGRES_DB=querydsl
oracle:
image: wnameless/oracle-xe-11g-r2:latest
ports:
- "1521:1521"
volumes:
- "./devops/sql-snippets/oracle.sql:/docker-entrypoint-initdb.d/oracle.sql"
cubrid:
image: lighthopper/cubrid:9.2.26.0004
command: "./create-start-demodb.sh"
ports:
- "33000:33000"
- "30000:30000"
- "8001:8001"
- "8002:8002"
- "1523:1523"
healthcheck:
test: csql demodb -c "SELECT 1"
interval: 5s
timeout: 60s
start_period: 60s
mongo:
image: mongo:3.6.1
ports:
- "27017:27017"
db2:
image: ibmcom/db2:11.5.0.0
privileged: true
ports:
- "50000:50000"
environment:
- DB2INST1_PASSWORD=a3sd!fDj
- DB2INSTANCE=db2inst1
- DBNAME=sample
- LICENSE=accept
- ARCHIVE_LOGS=false
- AUTOCONFIG=false
healthcheck:
test: /opt/ibm/db2/V11.5/bin/db2 CONNECT TO $$DBNAME
interval: 5s
timeout: 240s
start_period: 240s
sqlserver:
image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=Password1!
- MSSQL_PID=Express
ports:
- "1433:1433"
healthcheck:
test: /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$$SA_PASSWORD" -Q "SELECT 1" || exit 1
interval: 5s
timeout: 60s
start_period: 60s
firebird:
image: jacobalberty/firebird:2.5.9-ss
ports:
- "3050:3050"
environment:
- ISC_PASSWORD=masterkey
- FIREBIRD_DATABASE=querydsl.fdb
- FIREBIRD_USER=querydsl
- FIREBIRD_PASSWORD=querydsl

我能够通过将platform: "linux/x86_64"添加到每个部分下的docker-compose.yml文件中来实现这一点。

我的完整文件现在看起来是这样的:

version: "2.4"
services:
# Provides an easy way to ensure slow-starting databases are ready when the tests run
block-until-healthy:
image: alpine:latest
depends_on:
cubrid:
condition: service_healthy
db2:
condition: service_healthy
sqlserver:
condition: service_healthy
mysql:
image: mysql:5.6.38
ports:
- "3306:3306"
volumes:
- ./db/mysql.sh:/docker-entrypoint-initdb.d/mysql.sh
environment:
- MYSQL_ROOT_PASSWORD=querydsl
- MYSQL_USER=querydsl
- MYSQL_PASSWORD=querydsl
platform: "linux/x86_64"
postgresql:
image: mdillon/postgis:9.3-alpine
ports:
- "5433:5432"
volumes:
- ./db/postgresql.sql:/docker-entrypoint-initdb.d/postgresql.sql
environment:
- POSTGRES_USER=querydsl
- POSTGRES_PASSWORD=querydsl
- POSTGRES_DB=querydsl
platform: "linux/x86_64"
oracle:
image: wnameless/oracle-xe-11g-r2:latest
ports:
- "1521:1521"
volumes:
- "./devops/sql-snippets/oracle.sql:/docker-entrypoint-initdb.d/oracle.sql"
platform: "linux/x86_64"
cubrid:
image: lighthopper/cubrid:9.2.26.0004
command: "./create-start-demodb.sh"
ports:
- "33000:33000"
- "30000:30000"
- "8001:8001"
- "8002:8002"
- "1523:1523"
healthcheck:
test: csql demodb -c "SELECT 1"
interval: 5s
timeout: 60s
start_period: 60s
platform: "linux/x86_64"
mongo:
image: mongo:3.6.1
ports:
- "27017:27017"
platform: "linux/x86_64"
db2:
image: ibmcom/db2:11.5.0.0
privileged: true
ports:
- "50000:50000"
environment:
- DB2INST1_PASSWORD=a3sd!fDj
- DB2INSTANCE=db2inst1
- DBNAME=sample
- LICENSE=accept
- ARCHIVE_LOGS=false
- AUTOCONFIG=false
healthcheck:
test: /opt/ibm/db2/V11.5/bin/db2 CONNECT TO $$DBNAME
interval: 5s
timeout: 240s
start_period: 240s
platform: "linux/x86_64"
sqlserver:
image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=Password1!
- MSSQL_PID=Express
ports:
- "1433:1433"
healthcheck:
test: /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$$SA_PASSWORD" -Q "SELECT 1" || exit 1
interval: 5s
timeout: 60s
start_period: 60s
platform: "linux/x86_64"
firebird:
image: jacobalberty/firebird:2.5.9-ss
ports:
- "3050:3050"
environment:
- ISC_PASSWORD=masterkey
- FIREBIRD_DATABASE=querydsl.fdb
- FIREBIRD_USER=querydsl
- FIREBIRD_PASSWORD=querydsl
platform: "linux/x86_64"

最新更新