阿里云服务器-docker部署 web 应用(端口号)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云服务器-docker部署 web 应用(端口号)相关的知识,希望对你有一定的参考价值。
参考技术ADocker部署WEB 应用时,本地可以成功打开测试页,在公网上(阿里云服务器)却不能打开。
1、环境:阿里云服务器
2、CentOS7系统
3、Docker成功部署
这里前提docker 已经成功部署啦,现有有一个简单的测试案例,在docker上部署一个应用从而访问web。
接下来让我们尝试使用 docker 构建一个 web 应用程序。
我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。
通过 -p 参数来设置一样的端口:
docker ps 查看正在运行的容器
容器内部的 5000 端口映射到我们本地主机的 5000 端口上。
这时我们可以通过浏览器访问WEB应用
访问失败
指定外网端口为5000,
1. 本地测试能否打开测试页
本地没有问题。
2. 浏览器中访问
在任意一台电脑上输入公网IP+端口号 (此端口号为运行WEB应用时指定的端口号5000) 如我的阿里云公网IP为123.11.11.11 此时在任意一台有网络的浏览器地址栏输入公网IP:http://123.11.11.11:5000 应该会出现测试页
但现在出现如下图所示:
显示打不开
查啦大量资料,以前曾经也解决过,一定弄明白自已购买的地区后,再去设置安全组的配置规则。
***1. 登录阿里云管理控制台****
2.找到云服务器ECS-概览
3. 点击云服务器ECS,这个是我购买的类型,其他类型的就不清楚啦。
4. 点击本安全组后,再次点击配置规则:
5. 手动添加端口5000
6. 最后保存,再从浏览器地址栏输入公网IP加端口号3344成功显示测试页如图:
docker部署war包到阿里云
最近买了个阿里云服务器,配置1核2g内存,学习够了。记录下过程。
1,服务器相关,请看下图,云服务器主要配置是安全组和密钥,前者是开放端口,后者可以用于远程连接(比如我windows系统通过putty远程连接linux主机)
2,服务器安装docker,pull tomcat和mysql镜像(如docker pull tomcat)
3,创建自定义网络,用于容器间的通信,命令如下:
docker network create --subnet 192.168.49.0/24 --gateway 192.168.49.1 network0
以上创建了一个新的网络network0,可以通过docker network ls查看原始的网络和创建的网络
4,使用mysql镜像创建并启动容器,命令如下:
docker run -d -p 3366:3306 --name mysql --net network0 --ip 192.168.49.10 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=blog hub.c.163.com/library/mysql
以上,-d表示后台运行,-p 3366:3306表示将容器的3306端口映射到服务器的3366端口(如果不与外界进行数据传输,感觉没必要),--name 后面是容器的名字,--net 指定容器使用的网络,--ip 指定容器所属ip,-e 设置环境变量,此处设置了mysql的密码和创建了一个数据库blog(不是必要),最后一串东西是mysql镜像的名字(此处无tag)
5,mysql容器启动后,如果要在mysql里设置数据库和表,需要先进入容器,命令为:
docker exec -it mysql /bin/bash
表示进入mysql容器并使用bash命令模式,然后可以正常操作如mysql -uroot -p回车输入刚才指定的密码,创建数据库和表。其实最好通过Dockerfile文件来实现,直接进入容器操作属于黑箱操作,因为这个操作对于别人来说是不可知的,自己可能都会忘,而Dockerfile必定是记录了镜像是如何构建的。我现在还不熟悉Dockerfile。而且应该使用Dockerfile代替commit创建镜像,总之Dockerfile才是正道。。。
6,使用tomcat镜像启动容器,命令如下:
docker run -d -p 8080:8080 --name tomcat --net network0 --ip 192.168.49.11 hub.c.163.com/library/tomcat
以上跟mysql容器的创建差不多,要注意的是需要通信的容器间其ip要处于同一网段,也就是ip前3个数字相同。
7,复制war包到tomcat容器内,命令如下:
docker cp app.war tomcat:/usr/local/tomcat/webapps
以上表示将当前目录下的app.war包,复制到名称为tomcat的容器的/usr/local/tomcat/webapps目录下。这样项目就部署好了。在第6步时可以使用-v命令将tomcat的webapps与主机某个目录进行挂载,如果不进行挂载,则会在主机/var/lib/docker/volumes/配置随机的一个挂载目录,容器销毁后此目录还是存在,久了会占内存吧。最好挂载指定目录,自己也好清理。
ps:
war包中mysql的配置:url里的ip为mysql容器创建时指定的ip,数据库和表对应容器中创建的数据库和表。
windows推荐使用winscp软件进行云服务器文件的上传和下载。
第7步之后访问网站可能不会立即响应,请耐心等待若干分钟后再试,项目部署对于服务器可能需要点时间。
以上是关于阿里云服务器-docker部署 web 应用(端口号)的主要内容,如果未能解决你的问题,请参考以下文章
阿里云容器服务与 ASP.NET Core 的 Docker 部署:用 docker secrets 保存 appsettings.Production.json