我有一个工作正常的Angular 5应用,正在努力与docker-compose配合使用。
尽管许多人都遇到过类似的问题,但是建议的解决方案对我不起作用:
Access Angular app running inside Docker container
Cannot access nodejs app on browser at localhost:4200 (docker run -p 4200:4200 ....)
nodejs app doesn't connect to localhost when running within a docker container
ng serve not working in Docker container
not able to access angular2 app from docker container
这是我的docker-compose.yml
version: '3'
services:
webui-ng:
container_name: bcrm-webui-ng
build: ./webui-angular
ports:
- 4200:4200
下面是位于./webui-angular下的Docker文件。
FROM node:9.6.1
# Create app directory
WORKDIR /usr/src/app
COPY package*.json ./
# Install app dependencies
RUN npm install
# Bundle app source
COPY . .
# Expose API port to the outside
EXPOSE 4200
# Launch application
#CMD ["npm","run ng serve"]
#CMD ["npm", "run", "ng", "serve", "--host", "0.0.0.0"]
#CMD ["npm", "run", "ng", "serve", "--host", "0.0.0.0", "--port", "4200"]
#ENTRYPOINT ["npm", "run", "ng", "serve", "--open", "--host", "0.0.0.0", "--port", "4200"]
CMD npm run ng serve --host 0.0.0.0
请注意,在最后一行注释的所有命令均无效。也就是说,当我打开http://localhost:4200
时,在Firefox中总是出现“连接已重置”错误这是命令行输出
bcrm-webui-ng |
bcrm-webui-ng | > Xyz@0.1.0 ng /usr/src/app
bcrm-webui-ng | > ng "serve" "0.0.0.0"
bcrm-webui-ng |
bcrm-webui-ng | ** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200 **
bcrm-webui-ng | Date: 2018-09-24T14:03:38.509Z
bcrm-webui-ng | Hash: 4ac012def02ed7e0a08a
bcrm-webui-ng | Time: 19848ms
bcrm-webui-ng | chunk {inline} inline.bundle.js, inline.bundle.js.map (inline) 5.83 kB [entry] [rendered]
bcrm-webui-ng | chunk {main} main.bundle.js, main.bundle.js.map (main) 1.81 MB {vendor} [initial] [rendered]
bcrm-webui-ng | chunk {polyfills} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 221 kB {inline} [initial] [rendered]
bcrm-webui-ng | chunk {styles} styles.bundle.js, styles.bundle.js.map (styles) 28.2 kB {inline} [initial] [rendered]
bcrm-webui-ng | chunk {vendor} vendor.bundle.js, vendor.bundle.js.map (vendor) 4.25 MB [initial] [rendered]
bcrm-webui-ng |
bcrm-webui-ng | webpack: Compiled successfully.
答案 0 :(得分:0)
您的码头工人没有得到它第一次得到的port
地址。每次您使用run
而不是start
码头工人时,都会发生这种情况。它将4200
端口与第一个容器绑定在一起(如果您运行docker ps -a
,则会看到它)。
解决方案是
--name
完成。您可以选择其中之一。
答案 1 :(得分:0)
进一步调查,我知道问题不在docker端,而是以下命令不起作用
npm run ng serve --host 0.0.0.0 --disable-host-check
但是只有通过才能很好地工作。
ng serve --host 0.0.0.0 --disable-host-check