Docker实战(一)基于docker的web应用和发布
使用Docker部署一个以Tomcat 为服务器的支持HTTPS的web站点。其原理和在普通服务器上部署类似,只需要将自己开发的软件包放到Tomcat 工程目录下即可。不同的是,Tomcat服务器要在容器中启动,相应的工程源码也要导入到容器中。1.选择基础镜像docker pull tomcatdocker pull -a tomcat#把tomcat的所有...
使用Docker部署一个以Tomcat 为服务器的支持HTTPS
的web站点。其原理和在普通服务器上部署类似,只需要将自己开发的软件包放到Tomcat 工程目录下即可。不同的是,Tomcat服务器要在容器中启动,相应的工程源码也要导入到容器中。
1.选择基础镜像
docker pull tomcat
docker pull -a tomcat #把tomcat的所有版本都pull下来
2.制作HTTPS服务器镜像
部署一个HTTPS WEB站点,第一步就是要让HTTP的Tomcat基础镜像支持HTTPS。
(1)生成HTTPS所需要的证书:
keytool -genkeypair \
-alias tomcat \
-keyalg RSA \
-keysize 4096 \
-keypass 123456 \
-dname "cn=localhost,ou=localhost,o=localhost,l=tj,st=tj,c=CN" \
-validity 365 \
-keystore tomcat.keystore \
-storepass 123456
参数说明:
-alias:密钥的别名,可以是任意字符,只要不提示错误即可。因一个证书库中可以存放多个证书,通过别名标识证书。
-keyalg:密钥的算法。可以选择的密钥算法有:RSA、DSA、EC。
–keysize:密钥长度。keysize与keyalg默认对应关系:
2048 (when using -genkeypair and -keyalg is “RSA”)
1024 (when using -genkeypair and -keyalg is “DSA”)
256 (when using -genkeypair and -keyalg is “EC”)
-keypass:私有密钥的密码
-dname:”CN=名字与姓氏/域名,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码”
-validity:证书有效期天数
-keystore:指定生成证书的位置和证书名称
-storepass:获取keystore信息的密码
(2)把证书导入镜像中:
[root@docker ssl]# docker run -it -v /root/ssl/:/tmp/ tomcat bash
root@8f8c200f632c:/usr/local/tomcat# ls
LICENSE NOTICE RELEASE-NOTES RUNNING.txt bin conf include lib logs native-jni-lib temp webapps work
root@8f8c200f632c:/usr/local/tomcat# ls /tmp/
tomcat.keystore
root@8f8c200f632c:/usr/local/tomcat# mkdir keys
root@8f8c200f632c:/usr/local/tomcat# cp /tmp/tomcat.keystore keys/
(3)修改tomcat配置并commit:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/local/tomcat/keys/tomcat.keystore" keystorePass="123456" />
docker commit 8f8c200f632c tomcat:https
(4)验证基础镜像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat https aac3c4e9f473 11 seconds ago 465 MB
# docker run -it -p 80:8080 tomcat:https
root@18434c731300:/usr/local/tomcat# ./bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /docker-java-home/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
当使用
docker run
命令不加任何启动命令的时候,默认执行容器的ENTRYPOINT
或CMD
指令所指定的命令,该命令是在镜像制作的时候指定的。所以建议在制作镜像的时候,为服务性镜像提供默认的启动命令。
web浏览器访问:
3.将web源码导入tomcat镜像中
(1)静态导入:将文件复制一份到镜像中,在制作镜像的时候完整的。
COPY ./websrc /usr/local/tomcat/webapps/myproj/
(2)动态挂载:把服务器上的文件动态地挂载到容器中。需要在制作镜像时创建一个挂载点,然后在启动镜像时把文件动态的挂载到容器中。(方便调试)
RUN mkdir -p /usr/local/tomcat/webapps/myproj
VOLUME /usr/local/tomcat/webapps/myproj
docker run -ti -v $(pwd)/websrc:/usr/local/tomcat/webapps/myproj
可以在工程目录下创建两个Dockerfile,一个用于发布版本采用静态导入的方式,另一个用于调试使用动态挂载的方式。
编译时可以通过docker build -f
选项指定需要的Dockerfile。
以动态挂载为例说明:
#编写Dockerfile
FROM tomcat:https
RUN mkdir -p /usr/local/tomcat/webapps/myproj
VOLUME /usr/local/tomcat/webapps/myproj
EXPOSE 8080
CMD /usr/local/tomcat/bin/catalina.sh run
#构建镜像
docker build -t myweb:v1 .
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myweb v1 f40f6544cde6 9 seconds ago 465 MB
4.部署与验证
#启动容器
docker run -d -p 80:8080 -v websrc:/usr/local/tomcat/webapps/myproj myweb:v1
容器启动完成后就可以通过Chrome等浏览器访问该站点了
参考链接:
https://blog.csdn.net/sayyy/article/details/78351512
https://www.cnblogs.com/zhangzb/p/5200418.html
https://blog.csdn.net/szzt_lingpeng/article/details/51247980
https://blog.csdn.net/jy_he/article/details/51838566
更多推荐
所有评论(0)