Docker 构建 Java Web 开发环境(一)
使用 Docker 构建镜像的两种方法:
- 使用 docker commit 命令,直接在容器中操作(安装软件及配置文件等),比较简单直观;
- 使用docker build命令和 Dockerfile文件,可以模板化镜像构建过程,方便复用。
所以推荐使用第二种方法,但本文是用第一种方法,用第二种方法构建请看另一篇文章:Docker 构建 Java Web 开发环境——使用Dockerfile(二)
docker 的安装和简单使用请看另一篇文章:Mac 安装 Docker for Mac,下面直接开始使用。
准备工作
准备好 jdk8,tomcat8 的压缩包,放到本地的一个文件夹下,比如 /data/software
开始制作
可以到 docker hub
仓库中拉取centos
镜像(这个仓库可能会比较慢,也可以到国内的一些提供镜像的仓库中获取,我是从公司的仓库中拉的),如何操作可以看 docker 安装那篇文章。
获得centos的镜像之后
docker images //会列出本地已有的镜像
记住 centos 的 image id
比如说是 acc93762c23b
(这里也可以不用 image id
,也可以用项目名+版本号)
执行命令
docker run -it -v /data/software/:/data/software/ acc93762c23b /bin/bash
-i 表示以“交互模式”运行容器
-t 表示容器启动后会进入其命令行
-v 表示将本地目录挂载到容器中对应的目录
Mac 上在挂载目录时,要在docker—>preference
设置中先添加要挂载的目录/data/software
,否则貌似无法挂载
这样就运行并进入了容器中,下面的操作就和在普通的 cents 系统中安装软件一样了,到容器中的 /data/software
目录下会看到本地系统的文件都已经挂载到了该目录下,安装配置jdk可以参考: Mac、CentOS jdk安装及配置
编写启动脚本
需要编写个启动脚本,当运行该容器时,运行脚本来初始化容器中的环境,就像上面运行容器的命令中的 /bin/bash
的作用一样
在容器中/data
目录下新建脚本 start.sh
脚本内容如下
source /etc/profile //配置环境的位置,这个必须要
sh /usr/local/tomcat/bin/catalina.sh run //自己安装的文件位置
chmod u+x /data/start.sh //为运行脚本添加执行权限
创建镜像
上面操作完后,用exit
命令退出容器
docker ps //可以看出容器已关闭
docker ps -l //显示上次运行的容器,并记下容器id(CONTAINER ID)
根据上面的容器 id 创建个新镜像:
docker commit 57c312bbaad1 liu/javaweb:1.0.0 //比如上个容器id是 57c312bbaad1 ,和git类似,可以加 -m “注释”
使用创建的镜像启动一个容器
docker image //查看刚创建的镜像id (IMAGE ID)比如:25c5298b1a36
docker run -d -p 8080:8080 --name javaweb 25c5298b1a36 /data/start.sh //启动容器命令
-d 以“守护模式”运行容器,即容器在后台运行
-p 表示宿主机与容器的端口映射 (因此可以用宿主机的不同端口映射多个容器的8080端口,来做到独立运行多个 java web 应用)
回到宿主机,在浏览器中输入 http://local_ip:8080/ 看镜像是否制作成功
如果想进容器看看日志什么的,可以运行下面命令
docker exec -it 0234d150d48f /bin/bash //0234d150d48f是正在运行的容器id 可以从 docker ps 中获得
运行本地应用程序,可以将本地 war 目录挂载到容器中 tomcat 的 webapps 目录下,可以参见Docker 构建 Java Web 开发环境——使用Dockerfile(二)