本文最后更新于:星期二, 八月 2日 2022, 9:32 晚上
Datawhale Docker学习笔记第六篇
在没有学习docker之前,部署项目都是直接启动文件,比如java项目就是java –jar xxxx.jar的方式,python项目就是python xxxx.py。如果采用docker的方式去部署这些项目,一般有两种方式,以jar包项目为例
方式一、挂载部署
这种方式类似于常规部署,通过数据卷的方式将宿主机的jar包挂载到容器中,然后执行jar包的jdk选择容器中的而非采用本地的。
- 将jar包上传到服务器的指定目录,比如/root/docker/jar。
- 通过docker pull openjdk:8命令获取镜像
- 编写docker-compose.yml文件
version:'3.0'
services:
java:
image: docker.io/openjdk
restart:always
container_name: myopenjdk
ports:
- 8080:8001
volumes:
- /root/docker/jar/xxxx.jar:/root:z
- /etc/localtime:/etc/localtime
environment:
- TZ="Asia/Shanghai"
entrypoint: java -jar /root/xxxx.jar
mynetwork:
ipv4_address: 192.168.1.13
networks:
mynetwork:
ipam:
config:
- subnet: 192.168.1.0/24
参数解释:
build 指定dockerfile所在文件夹的路径 context指定dockerfile文件所在路径 dockerfile指定文件的具体名称
container_name 指定容器名称
volumes 挂载路径 z是用来设置selinux,或者直接在linux通过命令临时关闭或者永久关闭
ports 暴露端口信息
networks是用来给容器设置固定的ip
- 执行命令docker-compose up –d启动jar包, 可以通过docker ps查看容器是否在运行,需要注意的是默认查看所有运行中的容器,如果想查看所有容器,需要添加参数-a
注意如果容器启动失败或者状态异常,可以通过docker logs查看日志
通过docker inspect myopenjdk查看容器详细信息,可以看到容器ip已经设置成功
- 然后在虚拟机中打开浏览器输入jar包项目的访问地址,就可以看到运行的项目,需要注意访问端口是映射过的端口而非项目实际端口
方式二、构建镜像部署
将jar包上传到服务器的指定目录,比如/root/docker/jar。
在该目录下创建Dockerfile文件,通过vim等编辑工具在Dockerfile中编辑以下内容
FROM java:8
MAINTAINER YHF
LABEL description=”learn docker”
ADD xxx.jar
EXPOSE 8001
ENTRYPOINT [“java”,”-jar”,”xxxx.jar”]
参数解释:
FROM java:8 指定所创建镜像的基础镜像
MAINTAINER yhf 指定作者为yhf
LABEL 为生成的镜像添加元数据标签信息
ADD xxxx.jar 添加内容到镜像
EXPOSE 8080 声明镜像内服务监听的端口
ENTRYPOINT 指定镜像的默认入口命令,支持两种格式ENTRYPOINT[“java”,”-jar”,”xxxx.jar”];ENTRYPOINT java –jar xxxx.jar。注意每个dokcerfile中只能有一个ENTRYPOINT,如果指定多个只有最后一个生效。
Dockerfile构建完成以后可以通过命令docker build构建镜像,然后再运行容器,这里咱们用docker-compose命令直接编排构建镜像和运行容器。
编写docker-compose.yml文件
```yaml
version: ‘3’
services:
java_2:
restart: always
image: yhfopenjdk:latest
container_name: myopenjdk
ports:
- 8080:8001
volumes:
- /etc/localtime:/etc/localtime
environment:
- TZ="Asia/Shanghai"
entrypoint: java -jar /root/datawhale-admin-1.0.0.jar
networks:
mynetwork:
ipv4_address: 192.168.1.13
networks:
mynetwork:
ipam:
config:
- subnet: 192.168.1.0/24
```
参数解释同方式一:
- 执行docker-compose up –d直接启动基于文件构建的自定义镜像,如果镜像不存在会自动构建,如果已存在那么直接启动。如果想重新构建镜像,则执行docker-compose build。如果想在执行compose文件的时候重构,则执行docker-compose up –d –build。
此使通过dockerfile文件构建的镜像已经创建
通过镜像运行的容器已经正常启动,可以通过docker ps查看容器是否在运行,需要注意的是默认查看所有运行中的容器,如果想查看所有容器,需要添加参数-a
- 在浏览器中输入访问路径可以看到项目已经正常运行
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!