Назад | Перейти на главную страницу

docker-compose // piwik // ошибка при запуске

Я пытаюсь переключить все свое приложение на докер.

Конфигурация:

Я использовал nginx в качестве сервера. С докером я буду использовать его как прокси:

# nginx -v
nginx version: nginx/1.4.6 (Ubuntu)

Версия докера:

# docker version
Client:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Tue Apr 26 23:30:23 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Tue Apr 26 23:30:23 2016
 OS/Arch:      linux/amd64

# docker-compose -version
docker-compose version 1.7.1, build 0a9ab35

Установка:

Чтобы установить piwik, я использую предлагаемый здесь файл: индихостеры / пивик

Но я внес некоторые изменения, потому что я хотел бы: - Я хотел бы использовать настраиваемую базу данных, поэтому я настраиваю дополнительного пользователя и пароль. - я хотел бы использовать разные контейнеры mysql для приложения, поэтому я меняю db на piwik_db (я не уверен, что это хорошая практика) - я хотел бы получить доступ к phpmyadmin, но я не понимаю, как заставить его работать с точкой 2. Итак, я удаляю часть конфигурации.

Итак, мой docker compose fil выглядит так:

piwik_db:
  image: mysql
  volumes:
    - ./mysql/runtime:/var/lib/mysql
  environment:
    MYSQL_ROOT_PASSWORD: P@ssR00t
    MYSQL_DATABASE: analytics
    MYSQL_USER: admin
    MYSQL_PASSWORD: P@ssUser
app:
  image: piwik
  links:
    - piwik_db:mysql
  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
    - ./etc/letsencrypt:/etc/letsencrypt
  links:
    - app
  volumes_from:
    - app
  ports:
    - "8000:443"
cron:
  image: piwik
  links:
    - piwik_db:mysql
  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'

Результат:

Когда я бегу docker-compose up, он заканчивается ошибкой:

ERROR: for web  rpc error: code = 2 desc = "oci runtime error: could not synchronise with container process: not a directory"
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "compose/cli/main.py", line 63, in main
AttributeError: 'ProjectError' object has no attribute 'msg'
docker-compose returned -1

Когда я проверяю, какие контейнеры были установлены, я получаю

# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
f0388c2a89d3        piwik               "bash -c 'bash -s <<E"   About a minute ago   Up 59 seconds       9000/tcp            htdocs_cron_1
ef5d6c8c6e74        mysql               "docker-entrypoint.sh"   About a minute ago   Up About a minute   3306/tcp            htdocs_piwik_db_1

Почему я получаю сообщение об ошибке? Как добиться установки? Как сделать так, чтобы приложение всегда работало?

Спасибо заранее за любую помощь.


Ps: я все еще использую свою конфигурацию nginx в site-available:

server {
        listen 80;
        listen [::]:80;

        server_name  piwik.domain.com;
        # Redirige le HTTP vers le HTTPS #
        return         301 https://$server_name$request_uri;
}
server {

        ##
        # config SSL
        ##

        listen 443 ssl;
        ssl_certificate /etc/letsencrypt/live/piwik.domain.com.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/piwik.domain.com.com/privkey.pem;
        keepalive_timeout    70;
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  10m;
        fastcgi_param HTTPS on;
        # add Strict-Transport-Security to prevent man in the middle attacks
        add_header Strict-Transport-Security "max-age=31536000";

        server_name piwik.domain.com.com;
        server_name_in_redirect off;

        root /usr/share/nginx/html/piwik.domain.com.com/htdocs;
        index index.php index.html index.htm;

        # Logs
        access_log /var/log/analytics.access_log;
        error_log /var/log/analytics.error_log;

        # Default location settings
        location / {
                try_files $uri $uri/ /index.php?$args;
                charset utf-8;
                client_max_body_size 20M;
        }

        # Images and static content is treated different
        location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|html|woff|woff2|ttf|svg|eot|otf)$ {
                add_header Access-Control-Allow-Origin *;
                expires 360d;
                access_log off;
                add_header Cache-Control "public";
        }

        # Deny access to .htaccess files, if Apache's document root
        location ~ /\.ht {
                deny  all;
        }

        location ~ /(libraries|setup/frames|setup/libs) {
                deny all;
                return 404;
        }

        # Pass the PHP scripts to FastCGI server
        location ~* \.php$ {
                # Prevent Zero-day exploit
                try_files $uri =404;
                #
                fastcgi_split_path_info ^(.+?\.php)(/.*)$;
                if (!-f $document_root$fastcgi_script_name) {
                        return 404;
                }
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }

        # Redirect server error pages to the static page
        error_page   403  /403.html;
        error_page 404 /404.html;
        error_page   500 502 503 504  /50x.html;

        # Exclude from the logs to avoid bloating when it's not available
        include drop.conf;

}

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