sql >> Base de Datos >  >> RDS >> PostgreSQL

Crear tabla en la imagen acoplable de PostgreSQL

En el script docker-entrypoint.sh de la imagen oficial de docker de postgres está escrito:

psql+=( --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" )

        echo
        for f in /docker-entrypoint-initdb.d/*; do
            case "$f" in
                *.sh)     echo "$0: running $f"; . "$f" ;;
                *.sql)    echo "$0: running $f"; "${psql[@]}" < "$f"; echo ;;
                *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${psql[@]}"; echo ;;
                *)        echo "$0: ignoring $f" ;;
            esac
            echo
done

Por lo tanto, cada archivo .sql que desee ejecutar dentro de la imagen de la ventana acoplable se puede colocar dentro de esa carpeta. Entonces mi dockerfile se ve como

FROM postgres:9.3
ENV POSTGRES_USER docker
ENV POSTGRES_PASSWORD docker
ENV POSTGRES_DB docker
ADD CreateDB.sql /docker-entrypoint-initdb.d/

Y el contenido de mi CreateDB.sql:

CREATE TABLE web_origins (
    client_id character varying(36) NOT NULL,
    value character varying(255)
);

Así que empiezo mi contenedor con:

docker run -d my-postgres

Para comprobar:

docker exec -it 6250aee43d12 bash
[email protected]:/# psql -h localhost -p 5432 -U docker -d docker
psql (9.3.13)
Type "help" for help.

docker=# \c
You are now connected to database "docker" as user "docker".
docker=# \dt
           List of relations
 Schema |    Name     | Type  | Owner
--------+-------------+-------+--------
 public | web_origins | table | docker
(1 row)

Puede encontrar los detalles de mysql aquí en este blog .