docker-compose部署tomcat的需要注意的是:
直接用 docker-compose.yml 方式创建容器,无法启动 tomcat ,因为缺少启动文件,所以先临时创建一个容器,然后把容器内需要的文件复制到宿主机,再用 docker-compose.yml 方式进行部署
目录结构:
bin conf docker-compose.yml logs webapps
#启动一个容器,指定版本8.5.78
docker run --name my_tomcat -it -d -p 8080:8080 tomcat:8.5.7# 查看 容器 获取容器ID
docker ps -a
docker exec -it tomcat bash 或者 docker exec -it tomcat容器id bash容器内 tomcat 文件夹下的 conf bin logs webapps.dst 里面的内容都拷贝到上面宿主机上创建的对应文件夹内。容器的文件拷贝到宿主机的命令如下:
#在主机上执行
docker cp 容器id长格式:/usr/local/tomcat/webapps.dst/ /usr/local/tomcat/webapps查看容器id长格式的方法:
docker inspect -f '{{.ID}}' tomcat
如:docker cp 9f4bfb6e8ffd850b7e56055a46eaf7ffaf2609c5ae1a26502837778598b972b1:/usr/local/tomcat/webapps/ /home/cater/spring-java/tomcat85/webapps注意:路径不能包含*,否则找不到path
临时容器的版本与docker-compose创建的tomcat的版本一定要一致,否则会出现各种异常
文件拷贝完成之后,临时tomcat容器就可以删除了
docker rm -f tomcatdocker-compose.xml
version: '3'
services:
tomcat:
# restart: always
# build: /home/spring-java/tomcat85
build:
context: ./
dockerfile: Dockerfile
#image: tomcat:8.5.59-jdk8
container_name: tomcat8
logging:
#driver: "json-file"
driver: "gelf"
options:
#max-size: "50m"
#max-file: "8"
gelf-address: "udp://172.16.11.15:12201"
tag: "log-tomcat"
environment:
TZ: Asia/Shanghai
JAVA_OPTS: -Xms1024m -Xmx4096m -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
volumes:
- ./conf:/usr/local/tomcat/conf
- ./logs:/usr/local/tomcat/logs
- ./webapps:/usr/local/tomcat/webapps
# - ./lib:/usr/local/tomcat/lib
- ./webapps:/usr/local/tomcat/webapps
- ./application/logs:/application/logs
ports:
- 8088:8088
expose:
- 8088Dockerfile的内容:
FROM tomcat:8.5.78-jdk8
#将lib里面的jar包都拷贝到 /usr/local/tomcat/lib下面
COPY lib /usr/local/tomcat/lib注意:dockerfile的内容必须FROM开头
docker-compose up -d
如果tomcat容器需要依赖jar怎么办呢?
只需将主机的jar拷贝到容器即可,如:
docker cp /home/cater/spring-java/tomcat85/lib
9f4bfb6e8ffd3237e56055a46eaf7ffaf2609c5ae1a26502837778598b972b1:/usr/local/tomcat/lib/
注意:
webapps 中的是空的,
将目录下webapps.dist里文件复制到webapps
dockerfile中COPY 与ADD的区别:
如 COPY lib /usr/local/tomcat/lib
ADD lib /usr/local/tomcat/lib
COPY 文件夹时,拷贝的是文件夹里面的内容,文件夹lib本身不拷贝
ADD 文件夹时,文件夹lib本身会复制过去
| 留言与评论(共有 0 条评论) “” |