【发布时间】:2021-09-20 20:06:34
【问题描述】:
我正在尝试做的事情:
我打算在我的服务仓库中创建一个构建文件夹,其中应该包含所有与 docker 相关的文件。
我的服务依赖于 postgres 和 rabbitmq,因此作为开发工作流程,我将启动服务依赖项,因为 docker 包含并通过连接到容器公开的端口来运行我的应用程序。
我的服务已经有在 deploy-scripts 文件夹下创建数据库、创建表和创建索引所需的 SQL 文件。 (请参考下附文件夹结构图)
我计划通过将 deploy-scripts 文件夹复制到 docker-entry 点脚本来启动一个包含所有表、数据库和角色的 docker 容器,如此链接 How to create User/Database in script for Docker Postgres 中所述
详情:
Docker 编写文件
version: '3.4'
services:
database:
build:
context: ./postgres
dockerfile: DockerFile
ports:
- 5432:5432
volumes:
- database-data:/var/lib/postgresql/data
volumes:
database-data:
Postgres Docker 文件
FROM postgres:10.17-buster
COPY ../deploy-scripts /docker-entrypoint-initdb.d/
当我执行docker-compose -f build/docker-compose.dev.yml up 命令时,出现以下错误
Building database
[+] Building 0.2s (6/6) FINISHED
=> [internal] load build definition from DockerFile 0.0s
=> => transferring dockerfile: 36B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/postgres:10.17-buster 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 2B 0.0s
=> CACHED [1/2] FROM docker.io/library/postgres:10.17-buster 0.0s
=> ERROR [2/2] COPY ../deploy-scripts /docker-entrypoint-initdb.d/ 0.0s
------
> [2/2] COPY ../deploy-scripts /docker-entrypoint-initdb.d/:
------
failed to compute cache key: "/deploy-scripts" not found: not found
ERROR: Service 'database' failed to build: Build failed
有谁能帮帮我吗?如何将 deploy-scripts 文件夹复制到 postgres 中?
Docker Compose 必须使用构建文件夹上下文? Docker File 是否必须使用我的服务根文件夹上下文?
【问题讨论】:
-
在构建期间您无法将文件从构建上下文中取出。
..不在构建上下文中。 -
仅供参考:我已经找到了解决方案。但我无法将解决方案添加为答案,因为人们决定通过投票来结束这个问题 :)
标签: postgresql docker docker-compose