Las reglas de sintaxis del archivo .env para comillas, comentarios, valores vacíos y claves multilínea, en qué no coinciden dotenv y Docker Compose, y un linter en el que puedes pegar un archivo.
Un archivo .env es texto plano con un par KEY=value por línea. Las líneas en blanco se ignoran y las que empiezan por # son comentarios. Pon el valor entre comillas cuando tenga espacios en los extremos, un signo # o saltos de línea. No existe un estándar único, así que dotenv para Node y Docker Compose interpretan algunos casos límite de forma distinta.
Cómo lee dotenv las líneas habituales
La mayoría de los archivos .env rotos fallan por los mismos pocos detalles: un # en una contraseña, una clave privada pegada en varias líneas o unas comillas que nunca se cierran. Pega tu archivo en el linter para ver qué leería dotenv en cada clave y dónde Docker Compose lo leería de otra manera.
No. El formato surgió de las asignaciones de variables del shell y cada cargador documenta sus propias reglas. El paquete dotenv para Node y Docker Compose publican las suyas, y coinciden en lo básico: líneas KEY=value, comentarios con # y valores entre comillas.
Solo cuando las necesites. Las comillas son obligatorias para valores con un signo #, espacios al principio o al final, o saltos de línea. Usa comillas simples en Compose cuando quieras que un $ se mantenga literal, porque ahí los valores entre comillas simples no se interpolan.
Ponlo entre comillas dobles y conserva los saltos de línea reales, algo que dotenv admite desde la versión 15.0.0. También puedes dejarlo en una sola línea y escribir \n donde vaya cada salto, ya que los valores entre comillas dobles convierten \n en un salto de línea.
Sí, con cuidado. dotenv trata un # sin comillas como el inicio de un comentario. Docker Compose solo lo hace cuando hay un espacio antes del #, así que KEY=a#b da a#b en Compose pero a en dotenv. Deja un espacio antes de los comentarios en línea para ir sobre seguro.
No. Por defecto dotenv nunca cambia una variable que ya existe en el entorno, así que gana el valor definido por tu shell o tu hosting. Pasa la opción override en true si quieres que el archivo las reemplace.
La misma línea leída por dos cargadores
Las mismas claves que el archivo real, valores ficticios seguros y comentarios que explican cada grupo. Haz commit de este, nunca del .env real.
config() lee .env desde el directorio de trabajo actual por defecto. Los valores que ya están en el entorno se quedan como están.
Pega tu archivo .env
Qué lee dotenv de cada línea
Línea
Clave
Valor
Notas
(cadena vacía)
{n} claves leídas, {v} con notas
Aún no se ha encontrado ninguna clave.
No hay signo =, así que esta línea se ignora.
La clave contiene un espacio. Quítalo o la línea no se analizará como esperas.
No es un nombre portable. Los shells esperan letras, dígitos y guiones bajos, sin empezar por un dígito.
Las comillas no se cierran nunca, así que el resto del archivo puede acabar dentro de este valor.
También definida en la línea {n}. Deja una sola para que nadie tenga que adivinar cuál gana.
dotenv se detiene en el #, pero Docker Compose lo conserva porque no hay un espacio antes. Pon el valor entre comillas.
Contiene $. Docker Compose lo expande; dotenv a secas lo deja tal como está escrito.
Ocupa varias líneas dentro de las comillas.
Empieza gratis · Sin tarjeta de crédito