Docker PostgreSQL – /docker-entrypoint-initdb.d中的脚本不运行
所以,我有一个这个结构的docker-compose项目:
DockerDev - docker-compose.yaml - d-php - Dockerfile - scripts-apache - d-postgresql - Dockerfile - scripts - dev_data_setup.sql - logs - pgdata - www
PHP,Redis,ElasticSearch是可以的。 但Postgresql不会运行dev_data_setup.sql,并find了我find的任何不同的/dockes-entrypoint-initdb.d解决scheme(卷,ADD,COPY等)。 我试图运行和sh脚本,什么也没有。
你能看到这个docker-compose和Dockerfile并帮助我吗? 谢谢
Dockerfile:
FROM postgres:latest ADD ./scripts/dev_data_setup.sql /docker-entrypoint-initdb.d
泊坞窗,compose.yaml:
version: '2' services: php: build: ./d-php/ hostname: www.domain.com ports: - "80:80" volumes: - ./www:/var/www/html - ./d-php/scripts-apache2/apache2.conf:/etc/apache2/apache2.conf - ./d-php/scripts-apache2/web.conf:/etc/apache2/sites-enabled/web.conf - ./d-php/scripts-apache2/webservice.conf:/etc/apache2/sites-enabled/webservice.conf - ./logs:/var/log/apache2 links: - db - redis - elasticsearch db: build: ./d-postgresql/ volumes: - ./pgdata:/pgdata environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - PGDATA=/pgdata redis: image: redis:latest elasticsearch: image: elasticsearch:2.4.1
所以我发现了这个问题。 首先:我的SQL脚本试图重新创buildpostgres用户。 然后,dockedev_db退出。 第二:我需要删除所有与数据库相关的图片到docker-compose再次运行脚本。
谢谢你的帮助。
您的问题是由您在Dockerfile中使用ADD
的方式引起的:
FROM postgres:latest ADD ./scripts/dev_data_setup.sql /docker-entrypoint-initdb.d
这将创build一个名为/docker-entrypoint-initdb.d
的文件,其中dev_data_setup.sql
文件的内容。 你想要的是把/docker-entrypoint-initdb.d
作为一个目录。
您应该将您的ADD
命令更改为以下之一:
ADD ./scripts/dev_data_setup.sql /docker-entrypoint-initdb.d/
尾部的斜杠会将dest
参数视为目录。 或者使用
ADD ./scripts/dev_data_setup.sql /docker-entrypoint-initdb.d/dev_data_setup.sql
哪个会明确说出文件名。
参考: https : //docs.docker.com/engine/reference/builder/#/add
如果
<dest>
不以结尾的斜线结尾,则将其视为常规文件,<src>
的内容将写入<dest>
。
- docker错误FATA 获取http:///var/run/docker.sock/v1.18/images/search?term =节点:拨号unix /var/run/docker.sock:没有这样的文件或目录
- docker集装箱通信在开发机器上
- docker cp文件夹的内容
- Gitlab CI Runner Docker执行器公开端口
- 如何configurationHibernate ORM数据库属性以使用Docker
- docker-entrypoint-initdb中的MySQL脚本不会被执行
- 如何在beanstalk中使用docker挂载efs文件系统
- 在Python的dockerfile CHMOD
- jenkinspipe道:长期运行集装箱