angular - Docker/Angular4/Nginx

标签 angular nginx docker

我是 Docker 的初学者,我创建了这个 Dockerfile

FROM nginx:1.13-alpine

ENV APP_PATH /app
ENV PATH $APP_PATH/node_modules/@angular/cli/bin/:$PATH

RUN apk add --update --no-cache nodejs && mkdir $APP_PATH && rm -rf /etc/nginx/conf.d/*
WORKDIR $APP_PATH

COPY . .

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

RUN npm install \
  && ng build --aot --prod \
  && rm -rf /usr/share/nginx/html/* \
  && mv ./dist/* /usr/share/nginx/html/ \
  && npm cache clean \
  && apk del nodejs libstdc++ libgcc libuv http-parser ca-certificates \
  && rm -rf ./*

CMD ["nginx", "-g", "daemon off;"]

和 Nginx 配置
server {

  listen 80;

  sendfile on;

  default_type application/octet-stream;


  gzip on;
  gzip_http_version 1.1;
  gzip_disable      "MSIE [1-6]\.";
  gzip_min_length   256;
  gzip_vary         on;
  gzip_proxied      expired no-cache no-store private auth;
  gzip_types        text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  gzip_comp_level   9;


  root /usr/share/nginx/html;


  location / {
    try_files $uri $uri/ /index.html =404;
  }

}

我建立图像 docker build --rm -t appName -f Dockerfile .并运行容器 docker run -it -p 8080:80 appName
一切都好。但我有一个问题。我无法以交互方式更改我的代码。我 promise 改变docker commit ... .我重新启动了我的容器几次,但什么也没发生。
我会很感激任何建议。

最佳答案

Docker 允许您在构建镜像时复制文件,或者您可以在运行容器时挂载本地目录/文件。查看您的 Dockerfile,您似乎在构建时正在将代码复制到镜像中,这就是为什么在构建镜像时文件所处的状态是您在运行容器时将获得的状态。

我假设您使用的是 Linux/Mac,以下是将项目目录挂载到 docker 容器中的示例:

$ docker run -v "$PWD/dist:/usr/share/nginx/html" -it -p 8080:80 appName

现在,对主机操作系统上文件的任何更改都将反射(reflect)在 docker 容器中。

注意:您的 docker 文件很好,但您可以通过阅读 Internet 上的文章进行改进。

关于angular - Docker/Angular4/Nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45131257/

相关文章:

Angular 2/4 - 从 DOM 中删除组件,但保留在内存中

nginx - Nginx不重定向到https docker端口

visual-c++ - 使用 MSYS 在 Windows 7 中构建 nginx

express - 将nginx与expressJS结合使用时,我应该在express还是nginx中使用压缩?

docker - 使用 VSCode 在远程 SSH 主机中打开容器

bash - 由于未安装 "hstore"Postgres 扩展,CircleCI 测试失败

python - JSON 数据不是来自 Django REST API

javascript - Angular 2 最终版本中的提供程序更改

apache-spark - Zeppelin无法读取本地文件系统的文件路径

javascript - 等待所有 HTTP 请求返回,然后再继续执行另一个函数