我在 gitlab-ci 中遇到问题。这是我的 gitlab-ci.yml。我本地测试没问题。所以我在容器中执行 codecept 并且测试运行良好。但在管道中它失败了。
image: docker:latest
variables:
DOCKER_DRIVER: overlay
services:
- docker:dind
before_script:
- docker info
- apk update
- apk upgrade
- apk add python3 python3-dev py-pip build-base libffi-dev openssl-dev
- pip install docker-compose
build:
stage: build
script:
- docker-compose up -d
- docker exec -i -e MYSQL_HOST=beerfridgeaccountingwebsite_claudia-app-db_1 -e MYSQL_DB=bierkasse_test -e MYSQL_USER=root -e MYSQL_PWD=rootPassword1 beerfridgeaccountingwebsite_claudia-app-php_1 /bin/sh -c "export && composer install && ./vendor/bin/codecept run functional"
我是否必须像这样将环境变量推入其中?认为主机是带有 mysql 数据库的标记容器。喜欢它的本地。并且导出显示了正确的值,因此环境变量应该在里面?
这是 docker-compose 文件:
version: "3.4"
services:
claudia-app-nginx:
image: nginx:stable-alpine
ports:
- "8080:80"
volumes:
- .:/var/www/html
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- claudia-app-php
claudia-app-php:
build:
context: .
dockerfile: docker/php/Dockerfile
volumes:
- .:/var/www/html
depends_on:
- claudia-app-db
claudia-app-db:
image: mysql:5.7
ports:
- 3306:3306
volumes:
- ./db_data:/var/lib/mysql
restart: always
entrypoint:
sh -c "
echo 'CREATE DATABASE IF NOT EXISTS bierkasse; CREATE DATABASE IF NOT EXISTS bierkasse_test;' > /docker-entrypoint-initdb.d/init.sql;
/usr/local/bin/docker-entrypoint.sh --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci"
这是我的测试。我还需要使用 env. var 这里而不是使用带有所需数据的字符串?
public function testConnectionIsReturningProperly()
{
$connection = new Connection();
$connection->connect("beerfridgeaccountingwebsite_claudia-app-db_1", "bierkasse_test", "root", "rootPassword1");
}
这就是代码中使用的 connect() 函数。从 .env 文件本地加载变量。
$pdo = (new ConnectionDB)->connect($_SERVER['MYSQL_HOST'], $_SERVER['MYSQL_DB'], $_SERVER['MYSQL_USER'], $_SERVER['MYSQL_PWD']);
预先感谢您的任何小提示。
收到一只叮咚