Я бы хотел изменить образ Docker wrouesnel/postgres_exporter
таким образом, чтобы он мог использоваться в многоконтейнерном приложении Docker Compose и ожидал, пока Postgres примет соединения. Мой проект имеет следующую структуру:
.
├── docker-compose.yml
└── exporter
├── Dockerfile
└── wait-for-it.sh
где docker-compose.yml
читает
version: "3"
services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: mypassword
networks:
- mynetwork
exporter:
build: exporter
environment:
DATA_SOURCE_NAME: "postgresql://postgres:mypassword@db:5432/postgres?sslmode=disable"
ports:
- "9187:9187"
networks:
- mynetwork
networks:
mynetwork:
и wait-for-it.sh
получается из https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh, и Dockerfile
читает
FROM wrouesnel/postgres_exporter
COPY wait-for-it.sh wait-for-it.sh
ENTRYPOINT ["./wait-for-it.sh", "db:5432", "--", "./postgres_exporter"]
Однако, если я docker-compose build
и пытаюсь docker-compose up
, я получаю следующую ошибку:
> docker-compose up
Recreating postgres-performance-testing_exporter_1 ...
Recreating postgres-performance-testing_exporter_1 ... done
Attaching to postgres-performance-testing_db_1, postgres-performance-testing_exporter_1
exporter_1 | standard_init_linux.go:211: exec user process caused "no such file or directory"
Я не понимаю, какой файл он не находит и почемуне? Разве оба не скопированы на мой WORKDIR
?