一、Dockerfile
构建镜像
# 构建镜像运行的基础镜像
FROM openjdk:8-alpine
# docker 镜像创建人
MAINTAINER pys
# 为run、cmd、entrypoint、copy和add 设置工作目录,就是切换目录
WORKDIR /data/five-top/code/java
# 构建镜像时运行的指令,每一个run都会构建一层,所以多个命令时,拼接放在一起执行,
RUN echo "开始构建饿了么system镜像"
# 构建镜像时制定的一些参数,不在容器内部起作用
ARG JAR_FILE_PATH=jeecg-boot-module-system-2.2.0.jar
# 拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压
ADD ${JAR_FILE_PATH} /data/five-top/code/java/app.jar
# 拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能,只能在上下文即Dockerfile文件目录及一下复制
#COPY /data/five-top/code/python/*
# 暴露端口
EXPOSE 8081
# 变量属性值,容器内部也会起作用
# ENV
# 定义数据卷,指定容器挂载点到宿主机自动生成的目录或其他容器,这个是容器中的目录,不是宿主机的,宿主机的目录没有办法在这里生成
VOLUME /data/jeecgpys
# 容器启动的命令,如果有多个则以最后一个为准,也可以为ENTRYPOINT提供参数
# CMD [""]
# 容器进入时执行的命令
ENTRYPOINT ["java","-jar","app.jar","&"]
二、docker-compose.yml
编排和启动容器
# docker-compose版本格式
version: '2'
services:
# 服务名称
jeepys:
# 指定构建dockerfile 文件路径
build: .
# 指定构建镜像版本
image: "pys:v1"
# 依赖某个服务
depends_on:
- test
# 容器名称
container_name: pysproject
# 映射端口
ports:
- "8041:8081"
# 数据卷
volumes:
- /data/fivetoppys:/data/fivetoppys/container
# 启动方式
restart: always
test:
# 指定启动镜像
image: test:v1