Проблема заключается в том, что строка -для DOS/Windows заканчивается в исходном файле.
Обратите внимание, что первая команда ниже создает пустые строки, а вторая нет:
$ grep -r '.*html5uploader.*'
$ grep -r '.*html5uploader.*' | hexdump -C
00000000 74 65 73 74 2e 63 74 70 3a 09 09 3c 73 63 72 69 |test.ctp:..|
00000060 73 63 72 69 70 74 3e 0d 0a 74 65 73 74 2e 63 74 |script>..test.ct|
00000070 70 3a 09 09 09 24 28 22 23 73 63 72 65 65 6e 73 |p:...$("#screens|
00000080 68 6f 74 22 29 2e 68 74 6d 6c 35 75 70 6c 6f 61 |hot").html5uploa|
00000090 64 65 72 28 0d 0a |der(..|
00000096
Обратите внимание на последовательность байтов 0a 0d
выше. Это указывает на окончание строки -DOS/Windows.
Следующее производит желаемый текст:
$ tr -d '\r'
$("#screenshot").html5uploader(
$("#screenshot").html5uploader(
Таким образом, проблема заключается в том, что исходный файл, test.ctp, имеет окончания строки -DOS/Windows, которые при печати полной строки приводят к перезаписи вывода.
Используйте tr -d '\r'
или одну из удобных dos2unix
утилит для исправления файлов.
Для обсуждения того, какие редакторы можно использовать, чтобы избежать этой проблемы, см. «Какие текстовые редакторы правильно обрабатывают разрывы строк в стиле Windows -и Unix -?»
psql -h psql_postgis_db -U gis_admin gis
# or
psql -h psql_postgis_db gis gis_admin
Ни один из IP-адресов, которые вы пытаетесь использовать, не является правильным.
Из ваших начальных журналов мы видим, что ваш postgres должен правильно слушать. 0.0.0.0 на самом деле не является реальным IP-адресом :, он означает «любой IP-адрес, настроенный на этом хосте».
Вы можете найти IP-адрес своего контейнера postgres, чтобы связаться с ним (см., например, этот ответ на SO ), но вам даже не нужно этого делать. docker/docker -compose облегчают вам задачу, автоматически сопоставляя имена контейнеров/сервисов в той же сети с их соответствующими IP-адресами.Таким образом, ваш сервер БД доступен по имени службыpsql_postgis_db
Я действительно не понимаю, что вы написали в опции -U
для команды psql
(сочетание пользователя + имя БД... ). В любом случае, это должно быть имя пользователя, которое вы хотите использовать для подключения к серверу postgres. Из вашего файла компоновки это gis_admin
. Поскольку нет базы данных с таким же именем, как у пользователя, вам нужно указать имя базы данных, к которой вы хотите подключиться. Вы либо используете опцию -U
(psql -U <user> <db>
), либо используете позиционные параметры (psql <db> <user>
)
Просто добавьте параметры портов в докер -compose.yml.
Пример:
# Use postgres/example user/password credentials
version: '3.1'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: example
ports:
- "5432:5432"