我正在构建一个带有 2 个容器的 docker-compose。 ContainerA基于selenium和python在ContainerB中测试一个网站。但是我无法从测试容器中获取网页的内容,基本上我得到了一个空页面,但在本地机器的 swarm 之外访问它没有问题。
详情如下:
http/2
和自签名 sslr,并且在 /etc/nginx/templates/
(从 Dockerfile 加载)中有一个上游设置:server {
listen 80 default_server;
listen [::]:80 default_server;
return 302 https://$host$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
ssl_dhparam /etc/ssl/private/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
location /mygrpcchannel.Mygrpcchannel {
proxy_pass http://mygrpcchannel;
proxy_read_timeout 1d;
}
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
}
upstream monosphere {
server ${GRAVITY_IP}:8081;
}
这应该用于 grpc。
version: "3.7"
services:
setup:
image: alpine:latest
volumes:
- ./:/mnt/setup
command: >
ash -c "mkdir -p /mnt/setup/tmp"
mytest:
build:
context: .
dockerfile: ./docker/mytest/Dockerfile
depends_on:
- setup
volumes:
- type: bind
source: ./mytest
target: /opt/mytest
ports:
- 8081:8081
myweb:
image: myweb:latest
depends_on:
- setup
- mytest
environment:
UPSTREAM: mytest
ports:
- 8080:80
- 8443:443
可以通过 Firefox 上的 https://localhost:8443
本地访问该页面(在 Chrome 上我不知道如何绕过非私密连接警告)。
mytest 容器安装了 selenium 和 chromedriver。在那个容器内,我用 chrome 驱动程序启动了 selenium,然后尝试:
driver.get("https://myweb:443")
Selenium 返回 Finished Request
,但 page_source
和 title
为空。驱动程序本身应该没问题,因为我可以访问其他网站,例如 driver.get("https://google.com")
我不明白为什么我从测试容器中得到一个带有 https://myweb:443
的空页面。是不是跟证书和chromedriver有关?
感谢您的建议