Postgres: Войдите в систему и запустите сценарий sql в одну строку? - PullRequest
0 голосов
/ 02 июля 2019

Я использую Docker, и мне нужно импортировать мою БД через Dockerfile. В терминале обычно я бы сделал:

su - postgres

А потом:

psql -c "\i /opt/lampp/htdocs/pginit.sql"

Но последовательное размещение обеих команд в Dockerfile не сработает, потому что он пытается выполнить обе команды, оставаясь root. Поэтому мне интересно, есть ли способ в postgres переключиться на пользователя 'postgres' и запустить скрипт sql в одну строку?

Мой Dockerfile:

FROM cswl/xampp

RUN apt update -y

RUN apt install -y postgresql postgresql-contrib

COPY . /opt/lampp/htdocs/

WORKDIR /opt/lampp/htdocs/

RUN curl -sS https://getcomposer.org/installer | /opt/lampp/bin/php &&\
  /opt/lampp/bin/php composer.phar install

RUN curl https://s3.amazonaws.com/careers-picpay/lista_relevancia_1.txt -o db/lista_relevancia_1.txt &&\
  curl http://s3.amazonaws.com/careers-picpay/lista_relevancia_2.txt -o db/lista_relevancia_2.txt &&\
  curl https://s3.amazonaws.com/careers-picpay/users.csv.gz -o db/users.csv.gz

RUN gzip -d db/users.csv.gz

ENTRYPOINT /opt/lampp/lampp start && service postgresql start && *DB import would be here* && /bin/bash

Мой docker-compose.yml:

version: '3'
services:
  picpay-api:
    build: ./picpay-v2
    ports:
      - "7700:80"
    tty: true
...