我创建了一个docker-compose.yml文件并创建了三个服务:
我将它们添加到了一个名为call-asana-network的网络中。
在docker-compose.yml文件中,我在字段container_name
中设置了容器的名称,以便容器内部使用这些名称,但是,在nginx中前端之间的通信中可以无法与背面通讯,并在浏览器中显示错误ERR_NAME_NOT_RESOLVED
。我相信它是nginx配置文件,但我不知道它可以是什么。
我不知道这是否重要,但是前端系统是Angular 7。
Environment.prod.ts代码:
export const environment = {
production: true,
serverApiURL: "http://asana_back:8080/api"
};
Docker编写的代码:
version: '3'
services:
back:
image: openjdk:8-jre
container_name: asana_back
restart: always
tty: true
volumes:
- ./server-spring:/server-spring
command: java -jar -Dspring.profiles.active=prod /server-spring/system.war
ports:
- "8888:8080"
networks:
- call-asana-network
front:
image: nginx:1.17
container_name: asana_front
restart: always
tty: true
ports:
- "8980:80"
volumes:
- ./server-nginx/www:/var/www
- ./server-nginx/conf.d/:/etc/nginx/conf.d/
networks:
- call-asana-network
database:
image: mysql:8
container_name: asana_database
environment:
MYSQL_ROOT_PASSWORD: fWXDA0UCYnbf7Rr95hyt
MYSQL_DATABASE: call_asana
tty: true
networks:
- call-asana-network
ports:
- "3366:3306"
restart: always
# Docker network
networks:
call-asana-network:
driver: bridge
Nginx app.conf代码:
server {
listen 80;
index index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www;
location / {
try_files $uri $uri/ /index.html;
gzip_static on;
}
}
浏览器Chrome输入的标题数据:
Request URL: http://asana_back:8080/api/project
Referrer Policy: no-referrer-when-downgrade
Accept: application/json
Origin: http://localhost:8980
Referer: http://localhost:8980/
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36
答案 0 :(得分:1)
据我在您的帖子中所了解的,您有一个Angular前端应用程序,该应用程序连接到后端应用程序,两者都在Docker容器中运行。
作为Javascript应用程序的Angular应用程序由浏览器在主机上执行。不在容器中。当执行javascript代码时(在主机上),它会调用您的api(后端应用程序)。因此,对API的调用是在主机上发起的,谁不知道asana_back
是谁。只有docker-compose和Docker容器知道这一点。
因此,您的Angular配置需要更改为:
export const environment = {
production: true,
serverApiURL: "http://localhost:8888/api"
};
其余的设置看起来不错,但如果仍然无法完成,请告诉我。您应该可以使用。