Datawhale-Docker学习笔记-0006-Docker 综合
1. 通过挂载部署项目
假如说,我们现在有一个JAVA已经写好的项目,需要进行部署到服务器。在没有使用容器的情况下,我们正常情况下的步骤应该是,先在服务器上部署各种需要的环境,然后再通过指令运行项目。
但是有了Docker后,我们就有了其他的方法。
第一种就是通过将项目挂载在数据卷上运行。
首先,我们需要将JAR包传输到服务器上。例如:/root/docker/jar/。
然后,我们需要获取一个包含JAVA的镜像。例如: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
我们可以对compose中的选项进行一些解释:
- image:是我们选择的镜像,就是刚才拉取的openjdk
- restart:表示当关机或者重启docker时会一直启动此容器
- ports:就是我们需要映射的端口,就是主机端口8080->容器端口8001
- volumes:就是我们挂载的数据卷,第一个是将jar包挂载进来。其中z是用来设置SELinux。
- environment:设置环境变量
- entrypoint:是定义容器启动后执行的第一条指令
- mynetwork:是为容器指定IP地址
然后,我们可以通过 docker compose up -d启动容器。
2. 构建镜像部署
同样的,我们需要将jar包上传到服务器上。例如:/root/docker/jar/xxx.jar。
然后我们需要在上下文中创建dockerfile,来构建镜像。
FROM java:8
ADD xxx.jar
EXPOSE 8001
ENTRYPOINT [“java”,”-jar”,”xxxx.jar”]
其中,FROM指定了基础镜像,然后添加xxx.jar包,暴露端口,和执行的第一条指令。
在通过docker build构建镜像后,我们可以直接通过run指令运行容器即可。