0

I have cloned the following project: https://github.com/indiehosters/piwik and I modified the docker-compose like that in order to link it with the piwik with wordpress:

db:
  image: mysql
  volumes:
    - ./mysql/runtime:/var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD
app:
  image: piwik
  links:
    - db
  volumes:
    - ./config:/var/www/html/config
    - ./ssmtp.conf:/etc/ssmtp/ssmtp.conf
    - ./revaliases:/etc/ssmtp/revaliases
web:
  image: nginx
  volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf:ro
  links:
    - app
  volumes_from:
    - app
  environment:
    - VIRTUAL_HOST
cron:
  image: piwik
  links:
    - db
  volumes_from:
    - app
  entrypoint: |
    bash -c 'bash -s <<EOF
    trap "break;exit" SIGHUP SIGINT SIGTERM
    while /bin/true; do
      su -s "/bin/bash" -c "/usr/local/bin/php /var/www/html/console core:archive" www-data
      sleep 3600
    done
    EOF'

db2:
  image: mysql:5.7
  volumes:
    - "./.data/db/wordpress:/var/lib/mysql"
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: wordpress
    MYSQL_DATABASE: wordpress
    MYSQL_USER: wordpress
    MYSQL_PASSWORD: wordpress

wordpress:
  image: wordpress:latest
  volumes:
    - ".data/www/wordppress:/var/www/html"
  links:
    - db2
    - web
  ports:
    - "8000:80"
  restart: always
  environment:
    WORDPRESS_DB_HOST: db2:3306
    WORDPRESS_DB_PASSWORD: wordpress

But for some reason I get this error:

compose.config.config.find: Using configuration files: ./docker-compose.yml
docker.auth.auth.load_config: File doesn't exist
compose.cli.command.get_client: docker-compose version 1.8.0, build 94f7016
docker-py version: 1.9.0
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2g-fips  1 Mar 2016
compose.cli.command.get_client: Docker base_url: http+docker://localunixsocket
compose.cli.command.get_client: Docker version: KernelVersion=4.4.0-31-generic, Os=linux, BuildTime=Wed, 20 Apr 2016 14:19:16 -0700, ApiVersion=1.22, Version=1.10.3, GitCommit=20f81dd, Arch=amd64, GoVersion=go1.6.1
compose.cli.verbose_proxy.proxy_callable: docker info <- ()
compose.cli.verbose_proxy.proxy_callable: docker info -> {u'Architecture': u'x86_64',
 u'BridgeNfIp6tables': True,
 u'BridgeNfIptables': True,
 u'CPUSet': True,
 u'CPUShares': True,
 u'ClusterAdvertise': u'',
 u'ClusterStore': u'',
 u'Containers': 2,
 u'ContainersPaused': 0,
 u'ContainersRunning': 0,
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=False, filters={u'label': [u'com.docker.compose.project=piwik', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=piwik', u'com.docker.compose.service=db', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 1 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'977abffbb37e6e174ca288e74e2c093ebb4e1e647a54263a37171dbef5f28d02')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [u'mysqld'],
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'mysqld'],
             u'Domainname': u'',
             u'Entrypoint': [u'docker-entrypoint.sh'],
             u'Env': [u'MYSQL_ROOT_PASSWORD',
                      u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=piwik', u'com.docker.compose.service=app', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 1 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'0616eefb57ced533cda3d0dee0827e76e5af517d728dbe532d4a5144ed7b484d')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [u'php-fpm'],
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'php-fpm'],
             u'Domainname': u'',
             u'Entrypoint': [u'/entrypoint.sh'],
             u'Env': [u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
                      u'PHPIZE_DEPS=autoconf \t\tfile \t\tg++ \t\tgcc \t\tlibc-dev \t\tmake \t\tpkg-config \t\tre2c',
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=piwik', u'com.docker.compose.service=web', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=piwik', u'com.docker.compose.service=cron', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('mysql')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'',
 u'Comment': u'',
 u'Config': {u'ArgsEscaped': True,
             u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'mysqld'],
             u'Domainname': u'',
             u'Entrypoint': [u'docker-entrypoint.sh'],
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('piwik')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'pierre@piwik.org',
 u'Comment': u'',
 u'Config': {u'ArgsEscaped': True,
             u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'php-fpm'],
             u'Domainname': u'',
             u'Entrypoint': [u'/entrypoint.sh'],
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('nginx')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'NGINX Docker Maintainers "docker-maint@nginx.com"',
 u'Comment': u'',
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'nginx', u'-g', u'daemon off;'],
             u'Domainname': u'',
             u'Entrypoint': None,
             u'Env': [u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('piwik')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'pierre@piwik.org',
 u'Comment': u'',
 u'Config': {u'ArgsEscaped': True,
             u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'php-fpm'],
             u'Domainname': u'',
             u'Entrypoint': [u'/entrypoint.sh'],
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=piwik', u'com.docker.compose.service=db', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 1 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('mysql')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'',
 u'Comment': u'',
 u'Config': {u'ArgsEscaped': True,
             u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'mysqld'],
             u'Domainname': u'',
             u'Entrypoint': [u'docker-entrypoint.sh'],
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'977abffbb37e6e174ca288e74e2c093ebb4e1e647a54263a37171dbef5f28d02')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [u'mysqld'],
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'mysqld'],
             u'Domainname': u'',
             u'Entrypoint': [u'docker-entrypoint.sh'],
             u'Env': [u'MYSQL_ROOT_PASSWORD',
                      u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=piwik', u'com.docker.compose.service=app', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 1 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('piwik')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'pierre@piwik.org',
 u'Comment': u'',
 u'Config': {u'ArgsEscaped': True,
             u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'php-fpm'],
             u'Domainname': u'',
             u'Entrypoint': [u'/entrypoint.sh'],
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'0616eefb57ced533cda3d0dee0827e76e5af517d728dbe532d4a5144ed7b484d')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [u'php-fpm'],
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'php-fpm'],
             u'Domainname': u'',
             u'Entrypoint': [u'/entrypoint.sh'],
             u'Env': [u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
                      u'PHPIZE_DEPS=autoconf \t\tfile \t\tg++ \t\tgcc \t\tlibc-dev \t\tmake \t\tpkg-config \t\tre2c',
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=piwik', u'com.docker.compose.service=web', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=piwik', u'com.docker.compose.service=cron', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.parallel.feed_queue: Pending: set([<Service: db>, <Service: app>, <Service: web>, <Service: cron>])
compose.parallel.feed_queue: Starting producer thread for <Service: db>
compose.service.start_container_if_stopped: Starting piwik_db_1
compose.cli.verbose_proxy.proxy_callable: docker start <- (u'977abffbb37e6e174ca288e74e2c093ebb4e1e647a54263a37171dbef5f28d02')
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: app>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: app>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: app>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: app>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: app>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: app>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: app>, <Service: web>])
compose.cli.verbose_proxy.proxy_callable: docker start -> None
compose.parallel.parallel_execute_iter: Finished processing: <Service: db>
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: app>, <Service: web>])
compose.parallel.feed_queue: Starting producer thread for <Service: app>
compose.service.start_container_if_stopped: Starting piwik_app_1
compose.cli.verbose_proxy.proxy_callable: docker start <- (u'0616eefb57ced533cda3d0dee0827e76e5af517d728dbe532d4a5144ed7b484d')
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.parallel_execute_iter: Failed: <Service: app>
compose.parallel.feed_queue: Pending: set([<Service: cron>, <Service: web>])
compose.parallel.feed_queue: <Service: cron> has upstream errors - not processing
compose.parallel.feed_queue: <Service: web> has upstream errors - not processing
compose.parallel.parallel_execute_iter: Failed: <Service: cron>
compose.parallel.feed_queue: Pending: set([])
compose.parallel.parallel_execute_iter: Failed: <Service: web>
compose.parallel.feed_queue: Pending: set([])

ERROR: for app  Cannot start service app: Cannot link to a non running container: /piwik_db_1 AS /piwik_app_1/db
compose.cli.main.main: Encountered errors while bringing up the project.

What I want iis to be ablle too link the wordpress container with web one in order to be able to access the piwik API.

Do yoou have any idea hot to achieve that?

Dimitrios Desyllas
  • 523
  • 2
  • 10
  • 27

1 Answers1

0

The 'db' container is failing to start:

(.venv) root@papaya /s/w/docker-test# docker-compose up db
Creating dockertest_db_1
Attaching to dockertest_db_1
db_1    | error: database is uninitialized and password option is not specified 
db_1    |   You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
dockertest_db_1 exited with code 1

This works:

(.venv) root@papaya /s/w/docker-test# env MYSQL_ROOT_PASSWORD=hunter2 docker-compose up db
Recreating dockertest_db_1
Attaching to dockertest_db_1
db_1    | Initializing database
db_1    | Database initialized
...

Value-less env vars in your docker-compose.yml need to be exported.

Therefore you should have changed the:

environment:
    - MYSQL_ROOT_PASSWORD

Into this:

environment:
    - MYSQL_ROOT_PASSWORD: "somepassword"
Dimitrios Desyllas
  • 523
  • 2
  • 10
  • 27