Ранее на этой неделе я опубликовал руководство Как настроить локальную среду WordPress с помощью Docker. Если вы это прочитаете, то этот пост вам пригодится.
Когда вы закончите, обязательно ознакомьтесь с моим сообщением о некоторых полезных командах докеров, чтобы очистить среду разработки.
Многие из нас используют wp-cli для управления установками WordPress. Если вы используете Docker для управления локальной разработкой, то вам, вероятно, интересно, как можно использовать wp-cli, поскольку ваш контейнер теперь является виртуальной средой. Люди до сих пор не привыкли использовать Docker, поэтому идея использовать его для управления инструментами cli все еще немного сбивает с толку. К счастью, я уже сделал за вас всю работу!
Если вам понравилось это руководство или вы хотите добавить что-то в разговор, обязательно напишите мне в Twitter, и я свяжусь с вами.
Быстрый и грязный
Прежде чем использовать следующий фрагмент, не забудьте проверить первый фрагмент.
Давайте углубимся в подробности…
Настройка docker-compose
Если вы читали мой последний пост, у вас будет файл docker-compose.yml, который выглядит так внутри вашего каталога WordPress:
my-wpdb: image: mariadb ports: - "8081:3306" environment: MYSQL_ROOT_PASSWORD: ChangeMeIfYouWant my-wp: image: wordpress volumes: - ./:/var/www/html ports: - "8080:80" links: - my-wpdb:mysql environment: WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant
Давайте добавим в наш стек контейнер wp-cli ...
my-wpcli: image: tatemz/wp-cli volumes_from: - my-wp links: - my-wpdb:mysql entrypoint: wp command: "--info"
С последнего раза здесь появилось несколько новинок:
- Во-первых, мы говорим этому контейнеру использовать те же синхронизированные тома, что и наш контейнер my-wp (если быть точным, / var / www / html). Таким образом, wp-cli получит доступ к нашим файлам WordPress.
- Кроме того, мы связываем с ним контейнер my-wpdb, чтобы wp-cli мог предоставить общий доступ к базе данных. Если вы помните из нашего последнего сообщения, это назначение псевдонима my-wpdb как «mysql» - это то же самое, что и константа «DB_HOST» в wp-config.
- Наконец, мы переопределяем точку входа по умолчанию и команду, которую этот контейнер будет выполнять при запуске. Поскольку мой настраиваемый контейнер tatemz / wp-cli наследует функциональность от контейнера wordpress, команда по умолчанию, запускающая Apache, будет запущена. В этом случае нашей точкой входа будет команда wp, а подкоманда, которую мы хотим запустить, - это команда --info. При запуске нашего контейнера my-wpcli он быстро закроется после вывода вывода команды wp --info.
Контейнеры Docker чаще всего представляют собой крошечные простые серверы Linux. Следовательно, если команда запущена, которая не завершается, контейнер Docker останется в сети. Однако, если команда завершится, контейнер остановится. Вы всегда можете проверить, какие контейнеры запущены на вашем компьютере:
$ docker ps
Теперь мы готовы к запуску команд wp-cli ...
Запуск команд с помощью docker-compose
Нам нужно использовать наш контейнер my-wpcli, который мы добавили в наш стек, чтобы запускать только одноразовые команды. Другими словами, нам не нужен my-wpcli для работы как службы - только как инструмент cli:
$ docker-compose run --rm my-wpcli
Давайте разберемся с этим: команда «run» указывает docker-compose развернуть ваш контейнер и запустить настраиваемую команду. Во-первых, любые аргументы, которые мы передаем в docker-compose, должны появляться перед именем контейнера. В нашем случае мы передаем --rm только в качестве аргумента; это просто удаляет контейнер сразу после завершения команды «wp --info». Если бы мы этого не сделали, то создали бы потерянный контейнер.
$ docker-compose run --rm my-wpcli
Все, что следует после имени контейнера, переопределит настройку «команды», которую мы установили выше. В этом случае значение по умолчанию - «--info», но мы можем заменить его на что-нибудь полезное, например:
$ docker-compose run -rm my-wpcli post list
Это то же самое, что выполнить следующую команду wp-cli
$ wp post list
Чтобы упростить процесс, мы можем сохранить эту команду как псевдоним:
$ alias wp="docker-compose run -rm my-wpcli" $ wp post list
Теперь летим под своим псевдонимом!
$ wp core install --url="localhost:8080" --title="WordPress" --admin_user="admin" --admin_password="prollynotadmin" --admin_email="[email protected]" $ wp user create jimmy [email protected] --role="administrator" $ wp media regenerate -y $ wp search-replace localhost:8080 productiondomain.com $ wp db export site-dump.sql
Более простой способ
Я решил расширить свое объяснение, чтобы показать вам, как работать с docker-compose для выполнения одноразовых команд, однако из-за этого наш стек теперь стал больше. Поскольку мой образ контейнера tatemz / wp-cli наследует функциональность от официального контейнера wordpress, мы можем упростить весь этот процесс, изменив наш стек my-wp для использования моего пользовательского образа:
my-wp: image: tatemz/wp-cli volumes: - ./:/var/www/html ports: - "8080:80" links: - my-wpdb:mysql environment: WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant
Поскольку мы не переопределяем параметры «точки входа» или «команды», запускаемый по умолчанию сценарий запускает и инициализирует Apache. Как и в предыдущем посте, приступим к нашему стеку.
$ docker-compose up -d
Когда наш стек заполнен, мы теперь можем выполнять команды внутри запущенных контейнеров, а не создавать новый и уничтожать его после выхода.
$ docker exec my-wp wp post list
Вам понравилось это руководство? Оставьте мне комментарий ниже или в Твиттере.