【问题标题】:COPY not working with docker-compose but works find with docker buildCOPY 不能与 docker-compose 一起使用,但可以与 docker build 一起使用
【发布时间】:2019-11-14 09:58:25
【问题描述】:

我的任务是对 Angular 应用程序进行 dockerizing 并使用 Nginx 提供它。

我已将 angular 项目构建到 dist 文件夹,并希望将此文件夹与其他不同的微服务一起移动到构建容器中的 nginx->html 目录。

这就是我的 docker 项目的结构

 |-dist/
 |-Dockerfile
 |-dockerignore
 |-default.config

Dockerfile

FROM nginx

#Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*

COPY ./dist /usr/share/nginx/html

COPY ./nginx.conf /etc/nginx/conf.d/default.conf

在这个目录的顶部是一堆其他服务,它们需要与 Angular 应用程序一起运行,这些应用程序都按预期运行。使用以下 docker-compose.yml 文件

docker-compose.yml

version: '3.2'
services:
  adminportal:
    build: ./adminPortal
    ports:
      - "80:80"
    volumes:
      - "/usr/share/nginx/html:/usr/share/nginx/html"
      - "/etc/nginx/conf.d:/etc/nginx/conf.d"

当我使用 docker build 构建这个容器并运行它时,它会按预期运行“将 dist 内容复制到正确的文件夹并将配置复制到正确的目录”。 但如果使用docker-compose up --build 构建,一切运行正常,不会返回错误,但不会将文件复制到各自的 nginx 文件夹中。

【问题讨论】:

  • 你有文件夹“/usr/share/nginx/html”、“/etc/nginx/conf.d”到卷映射吗?
  • 是的,我有这个文件夹
  • 不是docker-compose使用同一个dockerfile构建镜像
  • 是的,但它不会将 dist 内容复制到所需位置
  • 我确实有类似的设置。它对我来说非常好。您能否通过在您的 dockerfile 中添加“RUN echo "Hello"”来验证您是否使用了正确的 dockerfile,以确保它在这两种情况下都选择了正确的 dockerfile。

标签: angular nginx docker-compose


【解决方案1】:

我遇到了类似的问题,我解决了将--build 参数传递给docker-compose 命令的问题,如下所示:

docker-compose up --build

通过这种方式,您正在强制 docker-compose 构建您的图像。就我而言,docker-compose.yml 文件如下所示:

version: '3'
services:
  nginx:
    ports:
      - "80:80"
      - "443:443"
    build:
      context: .
      dockerfile: Dockerfile

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-26
    • 2019-12-25
    • 2021-10-23
    • 1970-01-01
    • 2017-12-23
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多