docker - 使用 docker 和 nginx 在 5000 端口部署静态网站
问题描述
我尝试使用 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 image documentation中得到解决,所以我将对其进行解释。
$ 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
将此文件放在与 content 目录相同的目录中,运行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
在 your_container:80 上,nginx 正在监听并将代理到 your_container:500 您的博客正在回答
我希望这会有所帮助
推荐阅读
- c# - 如何访问数据库上下文接口的数据库字段?
- windows - 海拔批处理文件脚本不执行我的代码
- hibernate - 如何禁用 Spring Data JPA 的默认事务行为?
- pine-script - Trading View - Gap calc - 如何判断当日交易时段是否开始与市场关闭的状态?
- python - 未正确创建带有滚动条的表
- vim - 如何在没有箭头键的情况下向上/向下滚动vim中的命令
- python - 如果您所做的只是将异常打印到错误中,那么“捕获”异常是不是很糟糕?
- directx-11 - 如何最好地组织常量缓冲区
- c# - asp.net核心语法如何创建onclick事件按钮做一个功能
- java - 是否可以在满足您的条件之前在java中创建一个不返回的recusive方法?