Nginx+Docker搭建tensorflow環境
阿新 • • 發佈:2019-01-31
環境
- 系統:CentOS7
- pip(python 2.7)
- 準備工作
採用docker-compose構建映象,其中docker-compose使用pip安裝pip install docker-compose
,docker使用yum安裝yum install docker -y
- 構建檔案
vim docker-compose.yml
version: '2'
services:
jupyter:
image: tensorflow/tensorflow:latest-py3
container_name: jupyter
ports:
- "8888:8888"
environment:
- PASSWORD=xxx
volumes:
- "/tmp/tensorflow_logs"
- "./notebooks:/root/notebooks"
command:
- "/run_jupyter.sh"
- "/root/notebooks"
- "--allow-root"
tensorboard:
image: tensorflow/tensorflow:latest-py3
container_name: tensorboard
ports :
- "6006:6006"
volumes_from:
- jupyter
command:
- "tensorboard"
- "--logdir"
- "/tmp/tensorflow_logs"
- "--host"
- "0.0.0.0"
這裡使用的映象為
Python3.x
CPU版本的tensorflow,具體的其他版本可以參考官方
- 在構建檔案的目錄下執行
docker-compose up
即可啟動jupyter和tensorboard兩個映象,分別繫結本地的8888和6006埠,使用docker-compose up -d
PASSWORD
為jupyter的登入密碼,volumes
掛載了.ipynb檔案和tenorboard的日誌檔案到本地硬碟,從而實現兩個映象之間檔案的共享。 - 兩個映象成功啟動之後就可以直接通過http://127.0.0.1:8888和http://127.0.0.1:6006訪問了。
- 如果是想在雲主機上搭建並且擁有域名的話,可以使用nginx來進行反向代理,通過子域名來訪問。如果是想在雲主機上搭建並且擁有域名的話,可以使用nginx來進行反向代理,通過子域名來訪問。
注意這裡使用nginx反向代理的話會出現
跨域問題
,因此nginx需要進行跨域配置
# 這裡使用的是HTTPS,因此配置了證書,當然也可以不配置,。,
server {
listen 443 ssl;
# 指定域名
server_name tb.xxx.xxx;
ssl_certificate "/etc/letsencrypt/live/xxx/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/xxx/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://127.0.0.1:6006;
# 跨域的關鍵程式碼
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_http_version 1.1;
# 由於jupyter部分連結用到WebSocket,也會產生跨域問題
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}