• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

docker学习笔记之5:进阶实战-mysql+tomcat_mysql

mysql 搞代码 7年前 (2018-06-09) 184次浏览 已收录 0个评论

docker学习笔记之五:进阶实战–mysql+tomcat

一、mysql

参考资料:https://hub.docker.com/_/mysql/

 

1.下载mysql镜像

sudo docker pull mysql

 

2.启动mysql容器

sudo docker run -d -p 3306:3306 --name dbmysql -e MYSQL_ROOT_PASSWORD=password -v /mysql/datadir:/var/lib/mysql -v /mysql/conf:/etc/mysql/conf.d  docker.io/mysql:latest -e MYSQL_ROOT_PASSWORD=password :指定root密码 -v /mysql/datadir:/var/lib/mysql :指定数据库本地存储路径,如果系统没有关闭SELinux,会启动失败,原因是本地目录不允许挂载到容器,需要先执行chcon -Rt svirt_sandbox_file_t /mysql/datadir -v /mysql/conf:/etc/mysql/conf.d :指定使用自定义的mysql配置文件启动数据库,比如在该路径下创建一个my-config.cnf  vi my-config.cnf [mysqld] port=3306 character-set-server=utf8 wait_timeout=288000  # 链接超时,默认为8小时,单位为秒 lower_case_table_names=1 # 不去分大小写

 

 

3.docker-compose方式:

转到root用户

mkdir -p /docker-compose-dir/mysql

cd /docker-compose-dir/mysql

vi docker-compose.yml

dbmysql:   image: docker.io/mysql:latest   ports:     - 3306:3306   environment:     MYSQL_ROOT_PASSWORD: password   volumes:     - /mysql/datadir:/var/lib/mysql     - /mysql/conf:/etc/mysql/conf.d:ro

 

 

 
[root@centos-linux-agent mysql]# docker-compose up -d Creating mysql_dbmysql_1 [root@centos-linux-agent mysql]# docker ps -a CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES 087f4e32cd29        docker.io/mysql:latest   "docker-entrypoint.sh"   4 seconds ago       Up 3 seconds        0.0.0.0:3306->3306/tcp   mysql_dbmysql_1

 

 

4.数据库脚本初始化

有时候,需要先执行数据库初始化脚本才能运行项目容器,可以采用如下方式:
脚本路径:/mysql_sql/mysql.sql
sudo docker run -it --rm --link=mysql_dbmysql_1:db  -v /mysql_sql:/mysql_sql mysql:latest mysql -hdb -uroot -ppassword -Ddbname 

 

说明:如果脚本中包含建库语句,则可以去掉-D参数
进入容器后执行:
mysql> source /mysql_sql/mysql.sql;
mysql> exit
退出容器后,容器将自动删除。

 

 

二、tomcat

参考资料:https://hub.docker.com/_/tomcat/

 

 

下载镜像:

sudo docker pull tomcat

目前最新版为8.0.X,可以通过上面的官方地址,找到需要的jre+tomcat的tag版本

 

启动容器:

sudo docker run -d -p 8080:8080 -v /usr/local/tomcat  tomcat:latest

 

查看容器中的tomcat目录被挂载到本机的路径:

sudo docker ps 

 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ef993d0f48c1 tomcat:latest "catalina.sh run"22 minutes ago Up9 minutes 0.0.0.0:8080->8080/tcp goofy_blackwell

 

 

 

sudo docker inspect -f “{{.Mounts}}” ef9
[{bbc41e0bbc97ae32839e876f291eb60173b6b1fc2867dd11a5381f85a85b8a59 /var/lib/docker/volumes/bbc41e0bbc97ae32839e876f291eb60173b6b1fc2867dd11a5381f85a85b8a59/_data /usr/local/tomcat local true }]

 

可以看到:
/var/lib/docker/volumes/bbc41e0bbc97ae32839e876f291eb60173b6b1fc2867dd11a5381f85a85b8a59/_data

然后可以修改conf下的配置文件,将war包拷贝到webapps下,等等,修改后要重启容器:sudo docker restart ef9
 
也可以直接映射宿主机上的war包路径:
sudo docker run -d -p 8080:8080 -v /tomcat/webapps:/usr/local/tomcat/webapps  tomcat:latest
这样,只需要将war包拷贝到宿主机的/tomcat/webapps下即可。
 
这样做和在本机使用tomcat并没有实际的区别,它的优势就是宿主机不需要安装jdk和tomcat。
 
docker-compose:
可以使用docker-compose一次启动多个tomcat容器,并建立起他们之间的关联关系。

mkdir -p /docker-compose-dir/tomcat

cd /docker-compose-dir/tomcat

vi docker-compose.yml

version: '2' services:    db:      image: docker.io/mysql:latest      volumes:        - /mysql/datadir_tomcat:/var/lib/mysql        - /mysql/conf:/etc/mysql/conf.d:ro      restart: always      environment:        MYSQL_ROOT_PASSWORD: password            tomcat01:      depends_on:        - db      image: docker.io/tomcat:latest      volumes:        - /tomcat01/webapps:/usr/local/tomcat/webapps      links:        - db:db      ports:        - "8081:8080"      restart: always     tomcat02:      depends_on:        - db      image: docker.io/tomcat:latest      volumes:        - /tomcat02/webapps:/usr/local/tomcat/webapps      links:        - db:db        - tomcat01:tomcat01      ports:        - "8082:8080"      restart: always

 

 
docker-compose up -d
 
上面这种方式,随便进入任何一个容器,执行ping命令,都可以互相ping通
ping tomcat01
ping db
但是查看各自的/etc/hosts,却看不到相应的配置,就是这么神奇。
 
所以war里使用上面的链接别名配置好互相要访问的地址,然后拷贝到对应的部署路径下,并重启。
docker-compose restart
 
Dockerfile:
也可以使用Dockerfile,将war包等直接封装为一个新的镜像。
sudo mkdir /dockerfile
sudo vi Dockerfile
FROM tomcat:latest MAINTAINER "hanqunfeng <[email protected]>" ADD web.war /usr/local/tomcat/webapps/

 

 
将web.war拷贝到当前路径下
生成镜像:sudo docker build -t web/tomcat8 .  :注意最后面那个点,代表当前路径
 
启动:sudo run -p 8080:8080 -d web/tomcat8 
 
docker-compose:
tomcat01:      depends_on:        - db      build: /dockerfile      links:        - db:db      ports:        - "8081:8080"      restart: always

 

 

docker-compose up -d :第一次执行会自动创建一个镜像,并启动容器

如果该镜像已经被创建了,再次执行时要加上–build:docker-compose up –build -d,此时会重新创建该镜像。

 
 

 

 

 

 

欢迎大家阅读《docker学习笔记之5:进阶实战-mysql+tomcat_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:docker学习笔记之5:进阶实战-mysql+tomcat_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址