Я использую Docker Swarm с движком Docker версии 19.03.3.
У меня проблема с сборкой psql, похоже, что Dockerfile работает правильно, и я выдвигаю новую службу в реестр, но когда контейнерЯ обнаружил, что все файлы COPY отсутствуют, и расширение psql "Postgis", которое я устанавливаю на Dockerfile, не установлено.
Я не вижу никаких ошибок, и поэтому я не знаю, в чем проблема.
Dockerfile:
FROM postgres
RUN apt-get update -y
RUN apt-get install -y postgis
COPY cluster/ /docker-entrypoint-initdb.d/
рой yml-файл:
db:
build: docker-compose.d/postgres
image: 127.0.0.1:5000/postgres
restart: 'always'
environment:
- PG_MAX_WAL_SENDERS=8
- PG_WAL_KEEP_SEGMENTS=8
- PGDATA=/var/lib/postgresql/data/pgdata
- POSTGRES_USER=USER
- POSTGRES_PASSWORD=password
volumes:
- /db_data:/var/lib/postgresql/data'
deploy:
placement:
constraints:
- node.role==manager
шаги:
docker service create --name=registry --publish published=5000,target=5000 registry
qhetvgzqj0f8g1t4nxxx76cqz
overall progress: 1 out of 1 tasks
1/1: running
verify: Service converged
docker-compose build --no-cache db #if i dont use --no-cache it doesnt rebuild service
Successfully built f6413978c21c
Successfully tagged 127.0.0.1:5000/postgres:latest
docker-compose push db
Pushing db (127.0.0.1:5000/postgres:latest)...
The push refers to repository [127.0.0.1:5000/postgres]
latest: digest: sha256:dccccdbdfxxxxxxxcb1e5b3a8a size: 3877
docker stack deploy base --compose-file docker-compose.swarm.yml
Я вижу, что служба построена:
docker service ls
lobelr1vzj8l base_db replicated 1/1 127.0.0.1:5000/postgres:latest
журналы контейнеров:
docker service ps --no-trunc base_db
ltujcwnx9m2v61hjuqtph6d7s base_db.1 127.0.0.1:5000/postgres:latest@sha256:dccccdbdfafeb505b7ab349b21f4a580857c3cd51965cd36f81269cb1e5b3a8a swarm-manager Ready Ready 4 seconds ago
docker service logs base_db
psql:/docker-entrypoint-initdb.d/postgres.sql:1: ERROR: could not open extension control file "/usr/share/postgresql/12/extension/postgis.control": No such file or directory
Проблема в том, что контейнер на самом деле не собирается с помощью этой команды в Dockerfile "RUN apt-get install -y postgis"
Если я перехожу кКонтейнер и команды запуска вручную, он работает, а также показывает, что расширение никогда не было установлено ранее.
Почему это так? Спасибо.