Docker实战(八)之Web服务与应用

简介: 1.Apache官方提供了名为httpd的Apache镜像,可以作为基础web服务镜像Dockerfile(安装apache2)FROM httpd:2.4COPY ./public-html /usr/local/apache2/htdocs/2.NginxNginx是一款功能强大的开源反向代理服务器,支持HTTP、HTTP、SMTP、POP3、IMAP等协议。

1.Apache

官方提供了名为httpd的Apache镜像,可以作为基础web服务镜像

Dockerfile(安装apache2)

FROM httpd:2.4
COPY ./public-html /usr/local/apache2/htdocs/

2.Nginx

Nginx是一款功能强大的开源反向代理服务器,支持HTTP、HTTP、SMTP、POP3、IMAP等协议。它也可以作为负载均衡器、HTTP缓存或者Web服务器。Nginx一开始就专注于高并发和高性能的应用场景。它使用类BSD开源协议,支持Linux、BSD、Mac、Solaris、AIX等类Unix系统,同时也有windows移植版。

(1)使用官方镜像

docker run -d -p 80:80 --name webserver nginx

 

 3.Tomcat

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和Java Servlet Page(JSP)的支持。同时,它提供了作为Web服务器的一些特有功能,如Tomcat管理和控制台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,也可以当做一个单独的web服务器来使用。

4.Jetty

Jetty是一个优秀的开源Servlet容器,以其高效,小巧,可嵌入式等优点深得人心,它为基于Java的Web内容(如JSP和Servlet)提供运行环境。Jetty基于Java语言编写,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化为一个对象,可以迅速为一些独立运行的Java应用提供Web服务。

相对于老牌的Tomcat,Jetty架构更合理,性能更优。尤其在启动速度上,让Tomcat望尘莫及。Jetty目前在官方提供了Jetty镜像,直接运行docker run指令即可:

docker run -d jetty

docker run -d -p 80:8080 -p 443:8443 jetty

使用宿主机的浏览器访问container-ip:8080,即可获得Jetty运行页面,由于当前没有内容,会提示错误信息。

 

5.LAMP

LAMP(Linux+Apache+MySQL+PHP)是目前流行的Web工具栈,其中包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl,PHP编程语言。其组成工具均是成熟的开源软件,被大量网站所采用。和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点;和微软的.NET架构相比,LAMP更具通用、跨平台、高性能、低价格等优势。因此LAMP无论是在性能、质量还是价格方面都是企业搭建网站的首选平台。

注意:现在也有人用Nginx替换Apache,称为LNMP,但并不影响整个框架的选型原则,是彼此十分类似的技术栈。

1.使用linode/lamp镜像

首先执行docker run 指令直接运行LAMP,同时社区也提供了十分成熟的linode/lamp和tutum/lamp镜像。下面介绍两种方法:

docker run -p 80:80 -t -i linode/lamp /bin/bash

在容器中执行service apache2 start启动apache

2.使用tutum/lamp镜像

docker run -d -p 80:80 -p 3306:3306 tutum/lamp

启动成功访问Demo界面

 

6.WordPress

WordPress是风靡全球的开源内容管理系统,是博客、企业官网、产品首页等内容相关平台的主流实现方案之一。类似项目还有Drupal、Joomla、Typo3等。

WordPress基于PHP和MySQL,架构设计简单明了,支持主题,插件和各种功能模块。更重要的是WordPress拥有庞大的社区,在线资源非常丰富,并且在各大网络空间商和云平台中受到广泛支持。

(1)使用官方镜像

docker pull wordpress

(2)使用Compose搭建WordPress

新建docker-compose.yml文件:

wordpress:
    image: wordpress
    links:
        - db: mysql
    ports:
        - 8080: 80
db:
   image: mariadb
   environment:
        MYSQL_ROOT_PASSWORD: wordpress

docker-compose up

注意:如果提示没有docker-compose命令,Ubuntu用户可以通过sudo apt-get install docker-compose在线安装

centos用户yum install docker-compose进行安装

 

6.Ghost

Ghost是一个广受欢迎的开源博客平台,使用JavaScript编写,以MIT协议发布。它的设计非常简约,使用起来体验优异,非常适合做内容发布,故而受到很多极客或技术工作人员的喜爱。

docker run --name dhost-container -d ghost

docker run --name ghost-container-1 -p 8080:2368 -d ghost

7.Jekins

Jekins是一个得到广泛应用的持续集成和持续交互的工具。作为开源软件项目,它旨在提供一个开放易用的持续集成平台。Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,并用图表的形式形象的展示项目构建的趋势和稳定性。Jekins特点包括安装配置简单、支持详细的测试报表、分布式构建。

docker run -p 8080:8080 -p 50000:50000 jenkins

8.Gitlab

Gitlab是一款非常强大的开源源码管理系统。它支持基于Git的源码管理、代码评审、issue跟踪、活动管理、wiki页面,持续集成和测试等功能。基于Gitlab,用户可以自己搭建一套类Github的开发协同平台。

Gitlab官方提供了社区版本的Dockerfile镜像

docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 22:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest

 

小结:

Web服务在内的中间件领域为什么适合引入容器技术?

原因如下:

a.中间件服务器是除数据库服务器外的主要计算节点,很容器成为性能瓶颈,所以通常需要大批量部署,而Docker对于批量部署有着先天的优势;

b.中间件服务器结构清晰,在剥离了配置文件、日志、代码目录之后,容器几乎可以处于零增长状态,这使得容器的迁移和批量部署更加方便;

c.中间服务器很容易实现集群,在使用软件Nginx负载均衡后中间服务器集群变得非常容易。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
11月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1395 108
|
10月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
1244 0
|
9月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
838 52
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
10月前
|
存储 JavaScript 安全
Web渗透-XSS漏洞深入及xss-labs靶场实战
XSS(跨站脚本攻击)是常见的Web安全漏洞,通过在网页中注入恶意脚本,窃取用户信息或执行非法操作。本文介绍其原理、分类(反射型、存储型、DOM型)、测试方法及xss-labs靶场实战案例,帮助理解与防御XSS攻击。
3005 1
Web渗透-XSS漏洞深入及xss-labs靶场实战
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
664 59
|
10月前
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
543 13
|
10月前
|
安全 Linux PHP
Web渗透-命令执行漏洞-及常见靶场检测实战
命令执行漏洞(RCE)指应用程序调用系统命令时,用户可控制输入参数,导致恶意命令被拼接执行,从而危害系统安全。常见于PHP的system、exec等函数。攻击者可通过命令连接符在目标系统上执行任意命令,造成数据泄露或服务瘫痪。漏洞成因包括代码层过滤不严、第三方组件缺陷等。可通过参数过滤、最小权限运行等方式防御。本文还介绍了绕过方式、靶场测试及复现过程。
2007 0
|
缓存 Java Docker
如何对应用代码进行优化以提高在Docker容器中的性能?
如何对应用代码进行优化以提高在Docker容器中的性能?
500 1
|
安全 Java Docker
Docker 部署 Java 应用实战指南与长尾优化方案
本文详细介绍了Docker容器化部署Java应用的最佳实践。首先阐述了采用多阶段构建和精简JRE的镜像优化技术,可将镜像体积减少60%。其次讲解了资源配置、健康检查、启动优化等容器化关键配置,并演示了Spring Boot微服务的多模块构建与Docker Compose编排方案。最后深入探讨了Kubernetes生产部署、监控日志集成、灰度发布策略以及性能调优和安全加固措施,为Java应用的容器化部署提供了完整的解决方案指南。文章还包含大量可落地的代码示例,涵盖从基础到高级的生产环境实践。
819 3
|
11月前
|
运维 Cloud Native Docker
Docker:重塑现代应用交付的基石
Docker:重塑现代应用交付的基石

热门文章

最新文章