我尝试使用docker部署一个简单的静态index.html
和style.css
网站。
server {
#root /var/www/html;
# Add index.php to the list if you are using PHP
#index index.html index.htm index.nginx-debian.html;
server_name data-mastery.com; # managed by Certbot
location /blog {
proxy_pass http://127.0.0.1:5000;
}
listen 443 ssl; # managed by Certbot
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/letsencrypt/live/data-mastery.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/data-mastery.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = data-mastery.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name data-mastery.com;
return 404; # managed by Certbot
}
这是我的简单Dockerfile:
FROM nginx:alpine
COPY . /usr/share/nginx/html
我用以下命令启动容器:
sudo docker run -p 5000:5000 blog
我不确定这行是指当我运行docker ps
:时
80/tcp, 0.0.0.0:5000->5000/tcp
这里一切都对不对?
如何使它在5000端口上运行?
谢谢!
更新的答案:您的用例在nginx docker镜像文档中得到了说明,所以我将对其进行解释。
$ docker run --name my-blog -v /path/to/your/static/content/:/usr/share/nginx/html:ro -d nginx
或者,可以使用一个简单的Dockerfile来生成一个包含必要内容的新映像(这是一个比上面的绑定挂载更干净的解决方案(:
FROM nginx
COPY . /usr/share/nginx/html
将此文件放在与内容目录相同的目录中,运行docker build -t my-blog .
,然后启动容器:
$ docker run --name my-blog -d my-blog
暴露外部端口
$ docker run --name some-nginx -d -p 8080:80 some-content-nginx
然后你可以点击http://localhost:8080或http://host-ip:8080在您的浏览器中。
初始答案:您应该尝试以下操作:
sudo docker run -p 80:5000 blog
docker将代理到localhost:5000的连接到your_container:80
在你的容器上:80 nginx正在监听,并将代理到你的容器:500,你的博客正在回答
我希望这能帮助