Estoy configurando variables de entorno en un Dockerfile al que quiero hacer referencia en un archivo .sql. Ese archivo está en /docker-entrypoint-initdb.d ya que initdb lo ejecutará.
¿Cómo se puede pasar una variable de entorno? (por ejemplo, SELECT * FROM $myEnvironmentVariableHere; )
Hay algunas formas de hacer esto, pero la más fácil puede ser usar un script de shell simple con un HEREDOC:
Aquí está el script, llamado scripts/test.sh
#!/bin/bash psql << EOF SELECT * FROM $MYVAR LIMIT 1; EOFAquí se explica cómo ejecutarlo:
docker run --rm --name test_pg -v $PWD/scripts:/docker-entrypoint-initdb.d -e "MYVAR=pg_class" postgres:latestEntre los diversos mensajes de inicio, verá las siguientes líneas:
/usr/local/bin/docker-entrypoint.sh: sourcing /docker-entrypoint-initdb.d/test.sh relname | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasoids | relhasrules | relhastriggers | relhassubclass | relrowsecurity | relforcerowsecurity | relispopulated | relreplident | relispartition | relrewrite | relfrozenxid | relminmxid | relacl | reloptions | relpartbound --------------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-------------+-------------+----------------+---------+----------+-----------+------------+-------------+----------------+----------------+----------------+---------------------+----------------+--------------+----------------+------------+--------------+------------+-----------------------------+------------+-------------- pg_statistic | 11 | 11319 | 0 | 10 | 0 | 2619 | 0 | 16 | 398 | 16 | 2840 | t | f | p | r | 26 | 0 | f | f | f | f | f | f | t | n | f | 0 | 562 | 1 | {postgres=arwdDxt/postgres} | | (1 row)