首先拉一个空的ubuntu镜像
sudo docker pull ubuntu:14.04
接下来是创建两个数据卷 作为同步目录 一个我用来传输文件 一个用来部署war包
同步文件 冒号前的是主机的文件夹路径 冒号后的是容器的
docker run -v /home/docker_files:/usr/docker_files --name dataVol centos /bin/bash
使用两个数据卷 基于java/ubuntu:v1.0镜像创建并运行一个叫J2EE的容器 并将容器8080端口转发到本地8000端口
3306端口转到本地8888端口
sudo docker run -it --volumes-from dataVol --volumes-from warVol -p 8000:8080--name J2EE java/ubuntu:v1.0 /bin/bash
在容器上安装jdk Tomcat Mysql
docker start J2EE #启动一个已创建的镜像
docker attach J2EE #进入J2EE容器命令行操作 exit可以退出命令操作并关闭容器 之后需要继续start
设置tomcat和mysql的自启动 试过普通主机的方式 不奏效 最后发现 自启动需要通过DockerFile来构建
以下是DockerFile内容
FROM javaweb/ubuntu:v1.0
ENTRYPOINT ["/home/entrypoint.sh"]
FROM 表示基于该镜像
ENTRYPOINT 表示入口点 每次容器启动 都会调用容器里的那个脚本 需要在容器打包成的镜像里事先编写好 不然等下build会失败
entrypoint.sh如下
#!/bin/sh -e
sh /usr/tomcat/apache-tomcat-7.0.70/bin/catalina.sh start
service mysql start
bash
写了两条命令 一个是启动mysql 一个是启动tomcat tomcat记住要用catalina.sh不能用startup.sh 而且记得加start 加run的话会有命令占屏
再通过
docker build -t java:v1.0 .
. 点表示使用当前目录下的DockerFile 这样会再根据DockerFIle定制 再创建一个java:v1.0镜像 再通过这个镜像去创建容器就好了
这样就搭建好了 每次docker start J2EE 启动容器 会自动启动Mysql Tomcat 把war包放在同步目录下 就可以部署本地测试咯
妈妈再也不用担心我配环境了
然而还没完 还需要让容器中文支持
apt-get install language-pack-zh-hant language-pack-zh-hans-base
还需要dockerfile中添加
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
重新定制容器后 用locale检查 中文文件名就不会再乱码了
然而还没完 需要更改时区为北京时间
sudo dpkg-reconfigure tzdata
选择Asia/Shanghai 重置时区后at等定时任务需要重启动
/etc/init.d/atd restart
总算告一段落