Использование композитора с wordpress в докере

Я пытаюсь настроить рабочее пространство докера с помощью Alpine, PHP, Apache, MySQL и Composer.

В настоящее время я пытаюсь использовать следующие изображения:

PHP, Alpine и Composer: https://hub.docker.com/r/petehouston/docker-alpine-php-composer/

Wordpress: https://hub.docker.com/_/wordpress/

Я создал файл docker-compose.yml для управления этими зависимостями.

docker-compose.yml

version: '2'

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

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - ./www:/var/www/html
     links:
       - db
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_PASSWORD: wordpress

   alpine:
     image: petehouston/docker-alpine-php-composer:latest
     links:
       - wordpress

Итак, моя проблема в том, что я пытаюсь использовать композитор альпийского контейнера для управления своим Wordpress в контейнере Wordpress, но когда я пытаюсь использовать следующую команду:

docker run --rm -v $(pwd):/www -w /wordpress/var/www/html composer/composer create-project roots/sage your-theme-name 8.5.0

ничего не происходит, и альпийский контейнер не держится, после того как я запускаю compose-docker.up он выходит


person Cesar Henrique Damascena    schedule 11.11.2016    source источник


Ответы (1)


Вы не можете получить доступ к Wordpress container из Alpine container с помощью -w /wordpress/var/www/html. Насколько я понимаю, образ petehouston/docker-alpine-php-composer:latest предоставляет среду развертывания PHP. Это означает, что вы должны использовать это изображение вместо wordpress image. Ваш файл компоновки может выглядеть как

version: '2'

services:
   db:
     image: mysql:5.7
     volumes:
       - ./db:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   alpine:
     image: petehouston/docker-alpine-php-composer:latest
     volumes:
       - ./www:/home
     links:
       - db
     ports:
      - "8000:80"
     command: composer require phpunit/phpunit
     restart: always

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

person luanbuingoc    schedule 13.11.2016
comment
Привет, чувак, твой ответ потрясающий. Единственное, что альпийский контейнер продолжает умирать и снова перезапускаться, есть ли способ оставить его всегда включенным? так что я могу использовать composer для работы с Wordpress внутри него - person Cesar Henrique Damascena; 16.11.2016
comment
PS: в вашем коде была только 1 ошибка, она должна быть ports: - "8000:80" - person Cesar Henrique Damascena; 16.11.2016
comment
если я попытаюсь запустить docker exec -t -i stack_alpine_1 bash, чтобы открыть терминал и попытаться использовать композитор, я получаю это Error response from daemon: Container f9d60f6fcbba4b29bb31cda384f8390af385d5b786794135faa89a92d2bb3560 is restarting, wait until the container is running - person Cesar Henrique Damascena; 16.11.2016
comment
Спасибо за исправление моего файла. Я только что отредактировал его. После этого я могу нормально запустить свой кластер. - person luanbuingoc; 17.11.2016
comment
Пожалуйста, используйте docker ps, чтобы получить «идентификатор контейнера» или перепроверьте имя контейнера:/ - person luanbuingoc; 17.11.2016
comment
Я проверил, говорит, что контейнер перезапускается... когда я запускаю docker-compose up без -d, я вижу, как он выходит... на самом деле мне даже не нужен альпийский контейнер. Мне просто нужен контейнер с работающим Composer, чтобы я мог устанавливать зависимости в своем проекте в любое время. - person Cesar Henrique Damascena; 17.11.2016