Начальная настройка контейнеров Apache / Mysql Docker на CircleCI - PullRequest
0 голосов
/ 20 января 2020

Мне нужна помощь, чтобы справиться с CircleCI.

Проблема, с которой я столкнулся, заключается в том, что я не могу успешно реплицировать требования локальной инфраструктуры в сборку CircleCI.

Например, у меня есть 2 Docker контейнеров. Один из них является приватным (Apache), а другой использует самый последний MySQL образ.

Чтобы избежать DRY и избежать отслеживания как Dockerfile, так и .circleci / config.yaml, я бы в идеале нужно сохранить минимальную пользовательскую конфигурацию CircleCI, чтобы в качестве основного источника использовался Dockerfile.

За последние несколько дней я пробовал много разных подходов, но ни один из них не работает (ie . сборка не завершена - или службы не работают).

Я планирую сделать следующее:

  • Загрузить точную копию пользовательских Apache Docker контейнер
  • загрузка точной копии MySQL Docker контейнера
  • копирование пользовательских файлов из томов в Apache контейнер
  • загрузка данных из текущей базы данных в MySQL База данных
  • Выполнение тестов

В настоящее время я застрял на первых двух шагах.

Текущий код (который, как я говорил ранее, многократно прерывался в попытка заставить это работать)

# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
  build:
    docker:
    - image: skipton/cododigital.co.uk:latest
      auth:
        username: $DOCKERHUB_USERNAME
        password: $DOCKERHUB_PASSWORD
      environment:
      - WP_TEST_URL: http://localhost
      - WP_TEST_USER: test
      - WP_TEST_USER_PASS: test
      - WP_ENV: ci
      - MYSQL_DATABASE: circle_test
      - MYSQL_HOST: 127.0.0.1
      - DB_HOST: 127.0.0.1
      - DB_USER: root
      - DB_PASSWORD: ''
      - DB_NAME: circle_test
      command: apache2-foreground
    - image: circleci/mysql:8
      environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD: 1
    steps:
    - run:
        name: Install Composer
        command: |
          echo "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKICAgIC91c3IvbG9jYWwvYmluL3BocCAtciAiY29weSgnaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvaW5zdGFsbGVyJywgJ2NvbXBvc2VyLXNldHVwLnBocCcpOyIgJiYgXAogICAgL3Vzci9sb2NhbC9iaW4vcGhwIC1yICJjb3B5KCdodHRwczovL2NvbXBvc2VyLmdpdGh1Yi5pby9pbnN0YWxsZXIuc2lnJywgJ2NvbXBvc2VyLWluc3RhbGxlci5zaWcnKTsiICYmIFwKICAgIC91c3IvbG9jYWwvYmluL3BocCAtciAiaWYgKGhhc2hfZmlsZSgnU0hBMzg0JywgJ2NvbXBvc2VyLXNldHVwLnBocCcpID09PSB0cmltKGZpbGVfZ2V0X2NvbnRlbnRzKCdjb21wb3Nlci1pbnN0YWxsZXIuc2lnJykpKSB7IGVjaG8gJ0luc3RhbGxlciB2ZXJpZmllZCc7IH0gZWxzZSB7IGVjaG8gJ0luc3RhbGxlciBjb3JydXB0JzsgdW5saW5rKCdjb21wb3Nlci1zZXR1cC5waHAnKTsgfSBlY2hvIFBIUF9FT0w7IiAmJiBcCiAgICAvdXNyL2xvY2FsL2Jpbi9waHAgY29tcG9zZXItc2V0dXAucGhwICYmIFwKICAgIC91c3IvbG9jYWwvYmluL3BocCAtciAidW5saW5rKCdjb21wb3Nlci1zZXR1cC5waHAnKTsiICYmIFwKICAgIC91c3IvbG9jYWwvYmluL3BocCAtciAidW5saW5rKCdjb21wb3Nlci1pbnN0YWxsZXIuc2lnJyk7IiAmJiBcCiAgICAvdXNyL2xvY2FsL2Jpbi9waHAgLi9jb21wb3Nlci5waGFyIGNsZWFyY2FjaGU=" | base64 --decode > composer.sh && \
          chmod a+x composer.sh && \
          ./composer.sh && \
          rm ./composer.sh
          chmod a+x composer.phar && \
          php composer.phar require --dev phpunit/phpunit-selenium:* facebook/webdriver:dev-master
    - run:
        name: Install Dependencies
        command: |
          php composer.phar install
    - run:
        name: Downloading tunnel binary
        command: |
          apt-get update
          apt-get install -y wget
          wget http://downloads.lambdatest.com/tunnel/linux/64bit/LT_Linux.zip
    - run:
       name: Extracting tunnel binary
       command: |
          apt-get install -y unzip
          unzip LT_Linux.zip
    - run:
        name: Executing tunnel binary
        background: true
        command: |
          ./LT -user $LAMBDATEST_EMAIL -key $LAMBDATEST_KEY
    - run:
        name: Setup custom environment variables
        command: |
          echo 'export LT_USERNAME="$LAMBDATEST_USERNAME"' >> $BASH_ENV
    - run:
        name: Setup custom environment variables
        command: |
          echo 'export LT_ACCESS_KEY="$LAMBDATEST_ACCESS_KEY"' >> $BASH_ENV
    - store_artifacts:
        path: /var/www/tests
    - store_artifacts:
        path: /var/www/html
    - run:
        name: Run Tests
        command: |
          sleep 10
          php /var/www/tests/HomepageTest.php

Кто-нибудь может дать мне какие-нибудь указатели?

Одна вещь, которую я заметил, - это то, что контейнер MySQL действительно запускается, однако я не вижу аналогичного шага для контейнер Apache.

CircleCI Steps

...