dockerfile 写法
所属分类 docker
浏览量 614
Dockerfile
每一条指令构建一层
# 基于centos镜像
FROM centos
#维护人信息
MAINTAINER codefun007.xyz
# 安装httpd软件包
RUN yum -y update
RUN yum -y install httpd
# 开启80端口
EXPOSE 80
# 复制文件
ADD index.html /var/www/html/index.html
# 复制脚本并修改权限
ADD run.sh /run.sh
RUN chmod 775 /run.sh
# 启动容器时执行的脚本文件
CMD ["/run.sh"]
Dockerfile 分为四个部分
基础镜像信息
维护者信息
镜像操作指令
容器启动时执行的指令
每行一条指令,可带多个参数
# 行注释
常用指令
FROM
MAINTAINER
RUN
ADD
ENV
WORKDIR
VOLUME
EXPOSE
CMD
ENTRYPOINT
MAINTAINER 不推荐使用,更推荐使用LABEL来指定镜像作者
LABEL maintainer="codefun007.xyz"
CMD 启动容器时执行的Shell命令
CMD ["-C", "/start.sh"]
CMD ["/usr/sbin/sshd", "-D"]
CMD /usr/sbin/sshd -D
EXPOSE 声明容器运行的服务端口
EXPOSE 80 443
ENV 设置环境变量
ENV MYSQL_ROOT_PASSWORD 123456
ENV JAVA_HOME /usr/local/jdk1.8.0_45
ADD 拷贝文件或目录到镜像中
ADD html.tar.gz /var/www/html
ADD https://xxx.com/html.tar.gz /var/www/html
如果是URL或压缩包,会自动下载 解压
COPY 拷贝文件或目录到镜像中,用法同ADD,只是不支持自动下载和解压
COPY ./start.sh /start.sh
ENTRYPOINT
启动容器时执行的Shell命令,同CMD类似,只是由ENTRYPOINT启动的程序不会被docker run命令行指定的参数所覆盖
这些命令行参数会被当作参数传递给ENTRYPOINT指定指定的程序
ENTRYPOINT ["/bin/bash", "-C", "/start.sh"]
ENTRYPOINT /bin/bash -C '/start.sh'
Dockerfile 中可以存在多个ENTRYPOINT指令,仅最后一个生效
VOLUME
VOLUME ["/var/lib/mysql"]
一般不用
一般 docker run -v
USER 为 RUN CMD ENTRYPOINT 执行Shell命令指定运行用户
WORKDIR
为 RUN CMD ENTRYPOINT COPY ADD 设置工作目录
WORKDIR /data
ARG 构建镜像时 指定一些参数
FROM java:8
# FROM openjdk:8u312-slim
ARG JAR_FILE=target/springboot-docker-demo-1.0.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
FROM centos:7
MAINTANIER codefun007.xyz
ADD jdk-8u45-linux-x64.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk1.8.0_45
ADD apache-tomcat-8.0.46.tar.gz /usr/local
COPY server.xml /usr/local/apache-tomcat-8.0.46/conf
RUN rm -f /usr/local/*.tar.gz
WORKDIR /usr/local/apache-tomcat-8.0.46
EXPOSE 8080
ENTRYPOINT ["./bin/catalina.sh", "run"]
docker build -t tomcat:v1 .
docker run -itd --name=tomcate -p 8080:8080 -v /app/webapps/:/usr/local/apache-tomcat-8.0.46/webapps/ tomcat:v1
python http server docker 镜像制作
使用Dockerfile定制镜像
使用 Dockerfile 构建 gohttphello server 镜像
springboot应用打docker镜像
java8 docker 镜像大小
上一篇
下一篇
springboot应用打docker镜像
java8 docker 镜像大小
springboot 应用 docker 挂载外部配置文件
java面试题2022
Docker Java应用例子
mac 文件属性 @ 后缀 无权限问题