Formato do arquivo .env: as regras de sintaxe que confundem

Guia do formato .env

Formato do arquivo .env: sintaxe, aspas, comentários e multilinha | We.Inc

As regras de sintaxe do arquivo .env para aspas, comentários, valores vazios e chaves multilinha, onde o dotenv e o Docker Compose divergem, e um linter em que você pode colar o seu arquivo.

Um arquivo .env é texto simples com um par KEY=value por linha. Linhas em branco são ignoradas e linhas que começam com # são comentários. Coloque o valor entre aspas quando ele tiver espaços nas pontas, um sinal # ou quebras de linha. Não existe um padrão único, então o dotenv para Node e o Docker Compose leem alguns casos extremos de forma diferente.

Como o dotenv lê linhas comuns

A maioria dos arquivos .env quebrados falha nos mesmos poucos detalhes: um # em uma senha, uma chave privada colada em várias linhas ou uma aspa que nunca fecha. Cole o seu arquivo no linter para ver o que o dotenv leria em cada chave e onde o Docker Compose leria de outro jeito.

Perguntas frequentes

Existe uma especificação oficial do arquivo .env?

Não. O formato nasceu das atribuições de variáveis do shell e cada carregador documenta as próprias regras. O pacote dotenv para Node e o Docker Compose publicam as suas, e concordam no básico: linhas KEY=value, comentários com # e valores entre aspas.

Devo colocar aspas nos valores de um arquivo .env?

Só quando precisar. As aspas são obrigatórias para valores com sinal #, espaços no início ou no fim, ou quebras de linha. Use aspas simples no Compose quando quiser que um $ continue literal, porque valores entre aspas simples não são interpolados ali.

Como escrevo um valor multilinha, como uma chave privada?

Coloque-o entre aspas duplas e mantenha as quebras de linha reais, o que o dotenv aceita desde a versão 15.0.0. Você também pode deixá-lo em uma linha e escrever \n onde vai cada quebra, já que valores entre aspas duplas transformam \n em nova linha.

Posso colocar um comentário no fim de uma linha?

Sim, com cuidado. O dotenv trata um # sem aspas como início de comentário. O Docker Compose só faz isso quando há um espaço antes do #, então KEY=a#b dá a#b no Compose, mas a no dotenv. Deixe um espaço antes de comentários na mesma linha por segurança.

O dotenv sobrescreve variáveis que já estão definidas?

Não. Por padrão, o dotenv nunca altera uma variável que já existe no ambiente, então um valor definido pelo seu shell ou pelo host vence. Passe a opção override como true se quiser que o arquivo as substitua.

Onde o dotenv e o Docker Compose se separam

Mantendo arquivos .env seguros

dotenv e Docker Compose lado a lado

A mesma linha lida por dois carregadores

Exemplos para copiar

Um .env.example organizado

As mesmas chaves do arquivo real, valores fictícios seguros e comentários explicando cada grupo. Faça commit deste, nunca do .env real.

Carregue no Node

config() lê o .env do diretório de trabalho atual por padrão. Valores que já estão no ambiente continuam como estão.

Linter de .env

Cole o seu arquivo .env

O que o dotenv lê de cada linha

Linha

Chave

Valor

Notas

(string vazia)

{n} chaves lidas, {v} com notas

Nenhuma chave encontrada ainda.

Sem sinal =, então esta linha é ignorada.

A chave contém um espaço. Remova-o ou a linha não será lida como você espera.

Não é um nome portável. Shells esperam letras, dígitos e underscores, sem começar com dígito.

A aspa nunca fecha, então o resto do arquivo pode ser engolido por este valor.

Também definida na linha {n}. Mantenha só uma para ninguém precisar adivinhar qual vence.

O dotenv para no #, mas o Docker Compose o mantém porque não há espaço antes dele. Coloque o valor entre aspas.

Contém $. O Docker Compose expande; o dotenv puro mantém como foi escrito.

Ocupa várias linhas dentro de aspas.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site