Como obter a formatação adequada das variáveis de ambiente do Docker-compose Multiline?

dzhi

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.

Anthon

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.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como posso obter variáveis de ambiente do docker compose no Quasar Framework?

Variáveis de ambiente em docker-compose são substituídas como string vazia

Como o Spring mapeia as variáveis de ambiente do Docker?

Como obter a variável de ambiente do arquivo .env para um docker-compose.yml?

Como posso carregar variáveis de ambiente no docker-compose?

Como usar variáveis de ambiente no docker compose

Problemas para entender as variáveis de ambiente do Docker Compose

Como usar variáveis de ambiente docker-compose para preencher o arquivo de configuração

Como usar variáveis de ambiente docker-compose para preencher o arquivo de configuração

Como passar variáveis de ambiente de docker-compose para o projeto NodeJS?

Existe alguma maneira de obter o valor das Variáveis de Ambiente do Windows em PHP?

Como faço para usar variáveis de ambiente no arquivo .env em docker-compose.yml?

Como faço para usar variáveis de ambiente no arquivo .env em docker-compose.yml?

Como usar variáveis de ambiente em docker-compose na produção?

Como obter variáveis de ambiente do host remoto

Como obter variáveis de ambiente do minidespejo?

Propriedades da mola das variáveis de ambiente do Docker

Variáveis de ambiente Docker-compose

Variáveis de construção personalizadas do TFS 2015 não incluídas como variáveis de ambiente

Local adicional de configuração do Spring como variável de ambiente em docker-compose

como definir diferentes variáveis de ambiente no docker do Tomcat?

Use o nome ou id do contêiner como variável de ambiente no docker compose yml

Passe variáveis de ambiente como entrada para o ponto de entrada do Docker

Como obtenho o valor das variáveis de ambiente?

Como usar o conjunto de variáveis de ambiente de docker-compose.yml em package.json?

Como ecoar variáveis de ambiente no Docker

No Docker Compose, as variáveis de ambiente de .env são agrupadas dentro das imagens ou estão disponíveis apenas para o contêiner?

Como usar variáveis de ambiente em verificações de saúde docker-compose?

Como ler valores de arquivo local em variáveis de ambiente Docker-compose?

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo