Lxxxxxxy_
Lxxxxxxy_
Published on 2019-06-15 / 51 Visits
0

Docker

Docker-Mysql设置

docker pull mysql
docker run -d -p 3306:3306 -v /docker/mysql/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=LXY981203 --name mysql mysql

Docker-Tomcat设置

docker pull tomcat
docker run -d -p 8080:8080 --name tomcat -v /software/apache-tomcat-7.0.94/webapps:/usr/local/tomcat/webapps --link mysql:db --restart=always tomcat:7.0.94

Docker-Tomcat和Mysql连接

jdbc.url=jdbc:mysql://容器名:3306/数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC

Docker-宿主机向容器复制文件

docker cp 宿主机目录 容器id:容器目录
//示例:
docker cp /software/apache-tomcat-7.0.94/conf/server.xml tomcat:/usr/local/tomcat/conf
docker cp /root/jssecacerts tomcat:/usr/local/openjdk-8/jre/lib/security

<Context path="/Apache/upload" docBase="/home/Images/Apache/upload" debug="0" reloadbale="true"/>
<Context path="/searchScoreByOldSystem/resources/score" docBase="/software/score" debug="0" reloadbale="true"/>
<Context path="/searchScoreByOldSystem/resources/verifyCode" docBase="/software/verifyCode" debug="0" reloadbale="true"/>

Docker-Redis

docker pull redis
docker run -p 6379:6379 -d redis:latest redis-server

Docker的坑

整体路径映射

在使用Docker开启tomcat时,使用

docker run -d -p 8080:8080 --name tomcat -v /software/apache-tomcat-7.0.94/webapps:/usr/local/tomcat/webapps --link mysql:db --restart=always tomcat:7.0.94

其中,/software/apache-tomcat-7.0.94/webapps:/usr/local/tomcat/webapp,是将本地的目录映射到容器中的对应目录,由此,可以部署好网站。

Apache文件路径映射

在访问文件路径的时候,发现 域名/项目名/xxxx 的格式访问时,就是访问到对应的文件夹目录,也就是说,我想访问项目的A目录,那么在项目里必须有一个A目录,而不是使用server.xml来映射,于是我修改了Apache的目录,把图片文件夹放进去,于是,访问某个路径,比如

http://www.lixingyu.cn/Apache/upload/item/user/product/46e0d845-b939-4e0d-84c3-bf43d0440ca5/2019042220260862173.jpg

那么在项目文件夹下必须有一个 /upload/item/user/product/46e0d845-b939-4e0d-84c3-bf43d0440ca5/2019042220260862173.jpg 结构。

于是

QQ截图20190729140711

Apache的目录结构变成了这样。

searchScoreByOldSystem文件流

由于宿主机和容器之间必须有目录映射才能关联,运行在容器中的代码是无法访问宿主机上的文件的,但在运行时设置了/software/apache-tomcat-7.0.94/webapps:/usr/local/tomcat/webapps,于是在容器中操作webapps目录,也就相当于操作的是宿主机的webapps目录,我修改了程序的代码:

fileOutputStream = new FileOutputStream(new File("/usr/local/tomcat/webapps/searchScoreByOldSystem/resources/verifyCode/" + username + ".jpeg"));

将需要的验证码、成绩等图片输出在这个目录下,由于设置了目录映射,于是文件也就相应的保存到了宿主机的webapps目录。最后实现了获取验证码、成绩等操作。

如果不修改代码,则会提示找不到searchScoreByOldSystem/resources/verifyCode/这个目录,这是因为在容器中是没有这样一个路径的。

端口转发不成功

在阿里云的端口配置界面设置1/65535即可。