首页 > 解决方案 > Gitlab-ci wit symfony:php_network_getaddresses:getaddrinfo失败:名称或服务未知

问题描述

我第一次用 docker 和 symfony 创建了 gitlab-ci.yml。我学习。我不明白为什么它不起作用。我试图更改数据库的名称。也许我忘记了一些事情。我迷路了。

我需要你帮助我。非常感谢你

这是错误

$ php bin/console doctrine:database:drop --if-exists --force -e test
In AbstractMySQLDriver.php line 93:
An exception occurred in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known                         
In PDOConnection.php line 31:                                                                           
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known                                                          
In PDOConnection.php line 27:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known                                                          
In PDOConnection.php line 27:
                                                                           
PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known                                                             
                 

这是 gitlab-ci 文件

default:
  image: php:7.2-fpm
  services:
   - mysql:latest

cache:
  paths:
    - vendor/

variables:
  MYSQL_ROOT_PASSWORD: root
  MYSQL_DATABASE: sf4-reims

stages: # Ici on déclare toutes nos étapes
 - build
 - test

job:build:
 stage: build
 script:
   - apt-get update
   - curl -sSk https://getcomposer.org/installer | php -- --disable-tls &&
   - mv composer.phar /usr/local/bin/composer
   - composer install --prefer-dist
   - echo $CI_JOB_STAGE

job:test:
 stage: test
 script:
   - apt-get update
   - apt-get install -y git zip zip unzip
   - docker-php-ext-install pdo pdo_mysql
   - cp .env.test .env
   - php bin/console doctrine:database:drop --if-exists --force -e test
   - bin/console doctrine:database:create --if-not-exists -e test
   - bin/console doctrine:schema:drop --force --no-interaction -e test
   - bin/console doctrine:schema:create --no-interaction -e test
   - bin/console doctrine:fixtures:load --no-interaction --purge-with-truncate -vvv -e test
   - echo $CI_JOB_STAGE

这是文件 .env

 APP_ENV=test
 DATABASE_URL=mysql://root:root@database:3306/sf4-reims

这是文件 docker-compose.yml

     version: '3'
        services:
        apache:
            container_name: ${CONTAINER_NAME}_apache
            image: httpd:2.4.41
            ports:
                - ${APACHE_PORT}:80
                - ${APACHE_PORT_SSL}:443
            volumes:
                - ./${DIRECTORY_PROJECT}:/var/www/html
                - .docker/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf
                - .docker/httpd/logs:/var/log/httpd
            depends_on:
                - php
            networks:
                - front-network
                - back-network

        database:
            image: mysql
            command: "--default-authentication-plugin=mysql_native_password"
            container_name: ${CONTAINER_NAME}_database
            volumes:
                - .docker/data/db:/var/lib/mysql
            environment:
                MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
                MYSQL_DATABASE: ${MYSQL_DATABASE}
                MYSQL_USER: ${MYSQL_USER}
                MYSQL_PASSWORD: ${MYSQL_PASSWORD}
            networks:
                - back-network

        php:
            build: .docker/php
            container_name: ${CONTAINER_NAME}_php
            volumes:
                - ./${DIRECTORY_PROJECT}:/var/www/html
                - .docker/php/php.ini:/usr/local/etc/php/php.ini
            environment:
                - maildev_host=${CONTAINER_NAME}_maildev
            depends_on:
    #            - maildev
                - database
            networks:
                - back-network

        phpmyadmin:
            image: phpmyadmin/phpmyadmin
            container_name: ${CONTAINER_NAME}_phpmyadmin
            environment:
              PMA_HOST: database
              PMA_PORT: ${MYSQL_PORT}
            ports:
                - ${PHPMYADMIN_PORT}:80
            links:
                - database
            networks:
                - back-network

标签: docker-composesymfony4gitlab-ci

解决方案


我知道这是 9 个月前发布的,但我相信我刚刚遇到了同样的问题,但可以通过在gitlab-ci.yml.

我可以看到您在 中“索引”您的 mysql 容器databasedocker-compose.yml所以我相信您的应用程序引用了 mysql 主机,就像database在您的应用程序配置 ( config/packages/doctrine.yaml doctrine.dbal.host) 中一样。在这种情况下,你应该写

default:
  image: php:7.2-fpm
  services:
   - name: mysql:latest
     alias: database

代替

default:
  image: php:7.2-fpm
  services:
   - mysql:latest

在你的gitlab-ci.yml. 如果您在主机设置中使用另一个名称,那么您应该使用它作为别名。


推荐阅读