【发布时间】: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