Dockerfile构建springboot镜像
Dockerfile作用
Dockerfile 是用来构建 Docker 镜像的构建文件,是由一系列命令和参数构成的脚本。
Dockerfile基本命令
命令 | 说明 |
---|---|
FROM | 基础镜像,当前新镜像是基于哪个镜像的 |
MAINTAINER | 镜像维护者的姓名混合邮箱地址 |
RUN | 容器构建时需要运行的命令 |
EXPOSE | 当前容器对外保留出的端口 |
WORKDIR | 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点 |
ENV | 用来在构建镜像过程中设置环境变量 |
ADD | 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包 |
COPY | 类似ADD,拷贝文件和目录到镜像中! |
VOLUME | 容器数据卷,用于数据保存和持久化工作 |
CMD | 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最后一个生效! |
ENTRYPOINT | 指定一个容器启动时要运行的命令!和CMD一样 |
ONBUILD | 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的ONBUILD被触发 |
Dockerfile使用方式
- 编写Dockerfile文件
- docker build命令构建镜像
- docker run命令运行镜像
Dockerfile构建springboot镜像
编写镜像
FROM williamyeh/java8:latest
MAINTAINER sunpy
COPY ./auth.jar /auth-1.0.0.jar
ENTRYPOINT ["java","-jar","auth.jar"]
构建镜像
docker build -t auth-image:v1 .
编写docker-compose.yml文件,用于启动集群
version: "3"
# 虚拟网络配置,分配虚拟IP地址,当前配置使容器之间组成局域网(与driver的选择有关)
networks:
my-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.0.0/24
services:
mynginx:
image: nginx
container_name: "mynginx"
networks:
my-net:
ipv4_address: 192.168.0.80 #指定nginx容器IP地址
ports:
- "3500:80" #对主机80端口的访问会映射到容器的80端口
volumes:
- /home/nginx-conf/nginx.conf:/etc/nginx/nginx.conf
- /home/nginx-conf/conf:/etc/nginx/conf.d
- /home/nginx-conf/html:/usr/share/nginx/html
- /home/nginx-conf/logs:/var/log/nginx
#tomcat启动完成再启动nginx
depends_on:
- auth-1
- auth-2
- auth-3
auth-1:
image: auth-image:v1
container_name: "auth-1"
networks:
my-net:
ipv4_address: 192.168.0.81
ports:
- "8081:8089"
restart: "always"
auth-2:
image: auth-image:v1
container_name: "auth-2"
networks:
my-net:
ipv4_address: 192.168.0.82
ports:
- "8082:8089"
restart: "always"
auth-3:
image: auth-image:v1
container_name: "auth-3"
networks:
my-net:
ipv4_address: 192.168.0.83
ports:
- "8083:8089"
restart: "always"
启动容器
docker-compose -f docker-compose.yml up -d auth-1
docker-compose -f docker-compose.yml up -d auth-2
docker-compose -f docker-compose.yml up -d auth-3