Português (Brasil)

Ferramentas de desenvolvedor · Docker executado para conversor de composição do Docker

YAML pegadinhas nos arquivos do Compose: citações, o problema da Noruega e 22:22

· Fundo

janela de encaixe compor yaml

Diagrama abstrato ilustrando pegadinhas do yaml em arquivos compostos: cotações, o problema da Noruega e 22:22
Ilustração vetorial original ToolAcre

Os arquivos compostos são YAML e YAML tem opiniões sobre valores simples. Esta postagem explica as regras de análise por trás das surpresas mais comuns e como verificar qualquer YAML gerado ou escrito à mão para elas.

COUNTRY=NO tornou-se falso — um arquivo Compose passou um booleano onde o aplicativo queria um código de duas letras

COUNTRY=NO tornou-se falso — um arquivo Compose passou um booleano onde o aplicativo queria um código de duas letras. Evidência: um valor simples do tipo NO pode ser redigitado pelos analisadores. Reproduza a segurança escalar yaml com literais descartáveis. Emparelhe cada ocorrência de origem com sequências de mapas de valores citados; reserve a digitação do analisador para revisão do destino.

O incidente yaml também revela que um limite separado do incidente yaml é que strings numéricas hexadecimais e em formato de data de aparência octal são citadas. Evidência: strings numéricas hexadecimais e em formato de data com aparência octal são citadas. Esta restrição de segurança escalar yaml é um ponto de parada. Inspecione sequências de mapas de valores citados sem comportamento de fabricação e, em seguida, documente uma verificação de host para digitação do analisador.

YAML 1.1 escalares — como sim, não, ligado, desligado e NÃO sem aspas se tornam booleanos em muitos analisadores

YAML 1.1 escalares - como sim, não, ligado, desligado e NÃO sem aspas se tornam booleanos em muitos analisadores. Evidência: reservado sim não on off grafias booleanas e nulas são citadas. Rastreie tokens de segurança escalar yaml em sequências de mapas de valores citados. Separe os valores ordenados dos campos de último valor; a digitação do analisador está fora da coleção.

Um limite de mecanismo yaml relacionado é que um limite de gramática yaml separado é que os mapas usam dois espaços e as matrizes usam itens de traço. Evidência: os mapas usam dois espaços e as matrizes usam itens de traço. Use este fato de segurança escalar yaml para prever um membro ou escalar em sequências de mapas de valores cotados. Verifique os avisos antes de decidir qualquer coisa sobre a digitação do analisador.

Portas sexagesimais - por que um 22:22 sem aspas pode ser analisado como o número inteiro 1342 e por que os documentos do Compose dizem para citar portas

Portas sexagesimais - por que um 22:22 sem aspas pode ser analisado como o número inteiro 1342 e por que os documentos do Compose dizem para citar portas. Evidência: strings numéricas de portas com dois pontos recebem aspas simples. Julgue a serialização de segurança escalar do yaml a partir de seu modelo. A citação de valores entre aspas mapeia sequências protege os tipos, mas não fornece nenhuma prova operacional para a digitação do analisador.

A segunda observação de serialização yaml é Um limite de saída yaml separado é que os exemplos diretos de quoteYamlString revelam a decisão do escritor. Evidência: exemplos diretos de quoteYamlString revelam a decisão do escritor. Esta saída de segurança escalar yaml separa as configurações do contexto indisponível. Mantenha as sequências de mapas de valores citados revisáveis ​​e verifique a digitação do analisador de forma independente.

Zeros à esquerda e octais — valores como 0755 e strings de versão que YAML reinterpreta

Zeros à esquerda e octais — valores como 0755 e strings de versão que YAML reinterpreta. Pare na exceção de segurança escalar yaml em vez de adivinhar. Qualquer adição perto de sequências de mapas de valores citados precisa de um motivo específico de implantação vinculado à digitação do analisador.

Outra restrição de exceção yaml é que um limite de exceção yaml separado é que as extensões de âncoras e a análise YAML geral estão fora deste serializador. Evidência: extensões de âncoras e análise YAML geral estão fora deste serializador. Mantenha o comando de segurança escalar yaml original ao lado dos avisos. A comparação mostra quais valores citados as sequências de mapas contêm e qual decisão de digitação do analisador permanece manual.

Recuo e listas - a convenção de dois espaços, itens de lista sob uma chave e as formas de ambiente mapa versus lista:

Recuo e listas - a convenção de dois espaços, itens de lista sob uma chave e as formas de ambiente mapa versus lista:. Construa o exemplo de segurança escalar yaml a partir de nomes sintéticos. Torne cada item de sequência de mapas de valores citados rastreável sem expor detalhes de digitação do analisador de produção.

O mesmo exemplo de exemplo yaml demonstra que um limite de exemplo yaml separado é que a cotação defensiva protege apenas o subconjunto emitido. Evidência: a cotação defensiva protege apenas o subconjunto emitido. O fato de segurança escalar yaml emparelhado deve ser visível nas sequências de mapas de valores citados. Grave essa linha e evite suposições sobre a digitação do analisador.

Exemplo resolvido: consertando manualmente um arquivo quebrado - executando docker compose config para ver o que o analisador realmente produziu

Exemplo resolvido: consertar manualmente um arquivo quebrado - executando docker compose config para ver o que o analisador realmente produziu. Traduza a consequência de segurança escalar yaml em uma diferença de sequências de mapas de valores cotados observáveis. Docker possui o veredicto de digitação do analisador posterior.

A implementação da consequência do yaml também mostra Um limite de efeito yaml separado é que um valor semelhante ao NO pode ser redigitado pelos analisadores. Divida as responsabilidades de segurança escalar do yaml: a conversão grava sequências de mapas de valores entre aspas, o repositório remove segredos e os operadores validam a digitação do analisador.

O que isso não cobre — âncoras YAML, campos de extensão (x-*) e a especificação YAML 1.2 completa

O que isso não cobre — âncoras YAML, campos de extensão (x-*) e a especificação YAML 1.2 completa. Limite o escopo de segurança escalar do yaml aos ramos de sequências de mapas de valores citados mostrados aqui. Formulários e padrões vizinhos não podem responder a perguntas de digitação do analisador.

Mais um limite de escopo yaml segue de Um limite de limite yaml separado é que as grafias booleanas e nulas reservadas, sim, não, são citadas. Trate este limite de segurança escalar yaml como uma exclusão. Prefira sequências de mapas de valores citados precisos em vez de suposições sobre a digitação do analisador.

Conclusão: cite qualquer coisa que não seja obviamente uma string - e compare YAML escrito à mão com a saída do conversor para capturar valores simples

Conclusão: cite qualquer coisa que não seja obviamente uma string - e compare YAML escrito à mão com a saída do conversor para capturar valores simples. Audite a segurança escalar yaml como opção de origem, campo de modelo, valores citados, linha de sequências de mapas e aviso. Remova os segredos antes de verificar a digitação do analisador.

Finalmente, a fonte takeaway do yaml confirma. Um limite de decisão yaml separado é que as strings numéricas da porta de dois pontos recebem aspas simples. Fechar a segurança escalar do yaml de forma restrita: as sequências de mapas de valores citados são candidatas; a digitação do analisador e a equivalência do shell não são garantias.