Fiz um docker-compose.yaml para minha pilha do Wordpress usando a imagem oficial do Wordpress e quero adicionar algumas constantes personalizadas no arquivo wp-config.php automaticamente.
Seguindo as instruções oficiais da imagem, acabo assim:
### Web Application
wordpress:
container_name: 'wordpress'
image: 'wordpress:php7.2-fpm-alpine'
user: 1001:1001
environment:
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_USER=something
- WORDPRESS_DB_NAME=something
- WORDPRESS_DB_PASSWORD=xxxxxxxxxxxxxxx
- WORDPRESS_DEBUG=1
- WORDPRESS_CONFIG_EXTRA=
define( 'WP_REDIS_CLIENT', 'predis' );
define( 'WP_REDIS_SCHEME', 'tcp' );
define( 'WP_REDIS_HOST', 'redis' );
define( 'WP_REDIS_PORT', '6379' );
define( 'WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx' );
define( 'WP_REDIS_DATABASE', '0' );
define( 'WP_REDIS_MAXTTL', '21600' );
define( 'WP_CACHE_KEY_SALT', 'xx_ ');
define( 'WP_REDIS_SELECTIVE_FLUSH', 'xx_ ');
define( 'WP_AUTO_UPDATE_CORE', false );
volumes:
- ./wordpress:/var/www/html
- ./logs/php:/var/logs/php
- ./config/php/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
networks:
- frontend
- backend
restart: always
depends_on:
- mysql
Tudo funciona, mas meu OCD não pode descansar até que eu descubra por que wp-config.php gerado se parece com isto: Constantes WORDPRESS_CONFIG_EXTRA unidas em uma linha:
// WORDPRESS_CONFIG_EXTRA
define('WP_REDIS_CLIENT', 'predis'); define('WP_REDIS_SCHEME', 'tcp'); define('WP_REDIS_HOST', 'redis'); define('WP_REDIS_PORT', '6379'); define('WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx'); define('WP_REDIS_DATABASE', '0'); define('WP_REDIS_MAXTTL', '21600'); define('WP_CACHE_KEY_SALT', 'xx_'); define('WP_REDIS_SELECTIVE_FLUSH', 'xx_');
..em vez disso, formatado com cada constante em uma nova linha que é muito mais legível:
// WORDPRESS_CONFIG_EXTRA
define('WP_REDIS_CLIENT', 'predis');
define('WP_REDIS_SCHEME', 'tcp');
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_PORT', '6379');
define('WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx');
define('WP_REDIS_DATABASE', '0');
define('WP_REDIS_MAXTTL', '21600');
define('WP_CACHE_KEY_SALT', 'xx_');
define('WP_REDIS_SELECTIVE_FLUSH', 'xx_');
Alguém pode me orientar sobre como as variáveis de ambiente multilinha são tratadas no arquivo docker-compose, especificamente para a variável WORDPRESS_CONFIG_EXTRA ?
Eu tentei WORDPRESS_CONFIG_EXTRA: |
e WORDPRESS_CONFIG_EXTRA: |-
, mas nenhum funcionou da maneira que eu acho que deveria.
Em seu primeiro exemplo, o último elemento da primeira sequência do documento é um escalar simples (ou seja, sem aspas simples ou duplas) que se estende por várias linhas. Em um escalar simples, as novas linhas são substituídas por espaços (e as linhas vazias são substituídas por uma nova linha).
Então, se você quiser novas linhas dentro desse elemento, você deve usar (mostrando apenas a parte relevante):
- WORDPRESS_DB_PASSWORD=xxxxxxxxxxxxxxx
- WORDPRESS_DEBUG=1
- WORDPRESS_CONFIG_EXTRA=
define( 'WP_REDIS_CLIENT', 'predis' );
define( 'WP_REDIS_SCHEME', 'tcp' );
define( 'WP_REDIS_HOST', 'redis' );
define( 'WP_REDIS_PORT', '6379' );
define( 'WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx' );
define( 'WP_REDIS_DATABASE', '0' );
define( 'WP_REDIS_MAXTTL', '21600' );
define( 'WP_CACHE_KEY_SALT', 'xx_ ');
define( 'WP_REDIS_SELECTIVE_FLUSH', 'xx_ ');
define( 'WP_AUTO_UPDATE_CORE', false );
volumes:
- ./wordpress:/var/www/html
ou:
- WORDPRESS_DB_PASSWORD=xxxxxxxxxxxxxxx
- WORDPRESS_DEBUG=1
- |
WORDPRESS_CONFIG_EXTRA=
define( 'WP_REDIS_CLIENT', 'predis' );
define( 'WP_REDIS_SCHEME', 'tcp' );
define( 'WP_REDIS_HOST', 'redis' );
define( 'WP_REDIS_PORT', '6379' );
define( 'WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx' );
define( 'WP_REDIS_DATABASE', '0' );
define( 'WP_REDIS_MAXTTL', '21600' );
define( 'WP_CACHE_KEY_SALT', 'xx_ ');
define( 'WP_REDIS_SELECTIVE_FLUSH', 'xx_ ');
define( 'WP_AUTO_UPDATE_CORE', false );
volumes:
- ./wordpress:/var/www/html
Usar em |-
vez de |
exclui a nova linha final desse elemento. O que você tentou ( WORDPRESS_CONFIG_EXTRA: |
) é algo completamente diferente, pois você divide o único elemento escalar em um mapeamento com um único par de valores-chave.
Embora os valores acima carreguem como valores de string com novas linhas incorporadas, ainda pode acontecer que o processamento feito por docker-compose, em particular a passagem de coisas para um shell, possa transformar as novas linhas em espaços.
Também usei programas onde, se você tiver que escapar da nova linha para o processamento de "seguimento", finalizando cada linha com uma barra invertida ( \
)
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras