Я использую 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