Running application with docker-compose for testing

docker
config
2.0
configuration

#1

Hi guys!

I’ve started exploring CircleCI 2.0 and would like to use it to start my PHP/Mysql/Elasticsearch application and run some unit and acceptance tests against it.

Now with quite some hassle I’ve gotten it to up the containers using docker-compose and remote docker, but now I’m not sure how to actually reach it. Since it’s not running on 127.0.0.1, how can I access the web- and mysql server? Maybe I’m going at this completely wrong and maybe what I want isn’t even possible, but I’ve gotten this far and now I would really like to get this to work.

Essentially my two questions are:

  • What IP will the dockerized webserver be running on?
  • Is there a better way to achieve what the result I’m looking for? My config seems… inefficient.

Here is my CircleCI config:

version: 2
jobs:
  build:
    docker:
      - image: php:latest
    working_directory: ~/application-name
    steps:
      - checkout
      - setup_remote_docker
      - run:
          name: Update packages
          command: apt-get update
      - run:
          name: Install basic Unix tools
          command: apt-get install bzip2 -y
      - run:
          name: Install docker-compose
          command: |
            set -x
            curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
            chmod +x /usr/local/bin/docker-compose
      - run:
          name: Install necessary tools
          command: apt-get install git zip unzip mysql-client -y
      - run:
          name: Install Composer
          command: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
      - run:
          name: Install NodeJS / NPM
          command: |
            curl -sL https://deb.nodesource.com/setup_7.x | bash
            apt-get install -y nodejs
      - run:
          name: Install PHP dependencies
          command: composer install
      - run:
          name: Install Javascript dependencies
          command: npm install
      - run:
          name: Add application hostname to hosts file
          command: echo 127.0.0.1 application-name.dev | tee -a /etc/hosts
      - run:
          name: Create application environment
          command: docker-compose up -d
      - run:
          name: TO BE REMOVED Create database
          command: mysql -h127.0.0.1 -uroot < ./build/mysql/001_create_database.sql
      - run:
          name: Provision with test data
          command: ./node_modules/.bin/gulp provision:mysql
      - run:
          name: Run acceptance tests
          command: ./node_modules/.bin/gulp test:acceptance

#2