我是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
一切都很好。但我有一个问题。我不能交互地更改我的代码。我提交了我正在更改的docker commit ...。我重启了我的容器几次,但是什么也没有发生。如果有任何建议,我将不胜感激。
发布于 2017-07-17 03:58:15
Docker允许您在构建镜像时复制文件,也可以在运行容器时挂载本地目录/文件。查看您的Dockerfile,您看起来像是在构建时将代码复制到镜像中,这就是为什么构建镜像时您的文件所处的状态是您运行容器时将获得的状态。
我假设您使用的是Linux/Mac,下面是一个在docker容器中挂载项目目录的示例:
$ docker run -v "$PWD/dist:/usr/share/nginx/html" -it -p 8080:80 appName现在,对主机操作系统上的文件所做的任何更改都将反映在docker容器中。
注意:您的docker文件很好,但您可以通过阅读internet上的文章来进行改进。
https://stackoverflow.com/questions/45131257
复制相似问题