Docker postgres does not run init file in docker-entrypoint-initdb.d
基于Docker的Postgres文档,我可以在
我有含有
在我的电脑里,我有
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | web: restart: always build: ./web expose: -"8000" links: - postgres:postgres volumes: - /usr/src/app/static env_file: .env command: /usr/LOCAL/bin/gunicorn ronda.wsgi:application -w 2 -b :8000 nginx: restart: always build: ./nginx/ ports: -"80:80" volumes: - /www/static volumes_from: - web links: - web:web postgres: restart: always build: ./postgres/ volumes_from: - DATA ports: -"5432:5432" DATA: restart: always build: ./postgres/ volumes: - /var/lib/postgresql command:"true" |
还有我的Postgres Dockerfile,
1 2 3 4 | FROM library/postgres RUN mkdir -p /docker-entrypoint-initdb.d COPY init.sql /docker-entrypoint-initdb.d/ |
运行
如果您的初始化要求只是创建
那么,Postgres服务的docker-compose.yml文件的位将是:
1 2 3 4 5 6 7 8 9 | postgres: restart: always build: ./postgres/ volumes_from: - DATA ports: -"5432:5432" environment: POSTGRES_DB: ronda |
另一方面,不要将
这就是我如何在项目中使用Postgres并预加载数据库。
文件:docker-compose.yml
1 2 3 4 5 6 7 8 9 | db: container_name: db_service build: context: . dockerfile: ./Dockerfile.postgres ports: -"5432:5432" volumes: - /var/lib/postgresql/DATA/ |
如果项目的根文件夹上存在名为
文件:dockerfile.postgres
1 2 3 4 5 6 7 8 9 10 11 | FROM postgres:9.6-alpine ENV POSTGRES_DB DatabaseName COPY pg_dump.backup . COPY pg_dump.sql . RUN [[ -e"pg_dump.backup" ]] && pg_restore pg_dump.backup > pg_dump.sql # Preload DATABASE ON init RUN [[ -e"pg_dump.sql" ]] && cp pg_dump.sql /docker-entrypoint-initdb.d/ |
如果需要重新加载转储,可以使用以下命令删除当前数据库:
1 | docker-compose rm db |
然后可以运行