gpt4 book ai didi

Docker-compose 和 nginx 代理

转载 作者:行者123 更新时间:2023-12-02 18:22:32 30 4
gpt4 key购买 nike

我正在尝试使用 jwilder/nginx-proxy 作为我的 angular2 应用程序的反向代理,该应用程序分为 3 个容器(角度、 express 和数据库)。

我尝试了不同的配置来在端口 80 上代理对我的应用程序的请求,但是当我尝试运行 docker-compose 时,我得到:

ERROR: for angular  Cannot start service angular: driver failed programming 
external connectivity on endpoint example_angular_1
(335ce6d0c775b7837eb436fff97bbb56bfdcaece22d51049e1eb4bf5ce45553c): Bind for
0.0.0.0:80 failed: port is already allocated

虽然消息很清楚,端口 80 上存在冲突,但我无法找到绕过它的方法,当我将 angular 容器设置为在端口 4200 上工作时它工作得很好,但是我必须指定端口号每次我想访问该页面时都在 url 中。我正在使用反向代理,因为它不是将在我的环境中运行的唯一应用程序

以下是我的 docker-compose.yml
version: '3'

services:
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports: - "80:80"
volumes: - /var/run/docker.sock:/tmp/docker.sock:ro

angular:
build: client
ports: - "80"
environment:
- VIRTUAL_HOST=example.com
- VIRTUAL_PORT=80
restart: always

express:
build: server
ports: - "3000:3000"
links: - database
restart: always

database:
image: mongo
ports: - "27017:27017"
restart: always

networks:
default:
external:
name: nginx-proxy

Dockerfile 对于角容器
FROM node:8-alpine as builder

COPY package.json package-lock.json ./

RUN npm set progress=false && npm config set depth 0 && npm cache clean --force

RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app

WORKDIR /ng-app

COPY . .

RUN $(npm bin)/ng build --prod --build-optimizer

FROM nginx:1.13.3-alpine

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

RUN rm -rf /usr/share/nginx/html/*

COPY --from=builder /ng-app/dist /usr/share/nginx/html

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

EXPOSE 80

最佳答案

问题是您试图打开主机上的 80 端口两次。一次用于 nginx-proxy,一次用于 Angular。从 Angular 中删除“端口 80”。

关于Docker-compose 和 nginx 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47241789/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com