使用docker和nginx在5000端口部署静态网站



我尝试使用docker部署一个简单的静态index.htmlstyle.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,你的博客正在回答

我希望这能帮助

最新更新