dockerfile cd目录_Dockerfile编写指北

docker可以帮助我们快速部署安装需要的软件,比如mysql,nginx,elk等,都只需要简单的docker pulldocker run等简单命令即可,但是为了满足更多需求,一些个人应用的docker镜像,就需要用dockerfile来创建。

一. Dockerfile入门

Dockerfile的几个核心命令

  • FROM

    • 镜像的运行环境,即基础镜像是谁

  • MAINTAINER

    • 镜像的维护者信息

  • RUN

    • 基础镜像需要执行哪些命令

  • ADD

    • 添加文件到镜像中,会自动解压,以及下载网络URL

  • COPY

    • 拷贝文件或目录到镜像,类似ADD,但不会解压与下载网络URL

  • WORKDIR

    • 设置工作目录,即cd命令

  • VOLUME

    • 设置挂载主机目录

  • EXPOSE

    • 设置容器运行时开放的端口

  • CMD

    • 启动容器需要的命令

1. FROM

指定构建的镜像的运行环境

FROM centos:7
2. MAINTAINER

指定镜像的维护者与联系信息

MAINTAINER AntzUhl 
3. RUN

构建镜像时执行的命令,此处我们可以安装容器需要的工具

  • 直接添加命令

RUN yum install wget
  • 参数拼接命令

RUN ["yum", "install", "wget"]

另外还可以执行其他需要的命令,比如clone库

RUN git clone git@github.com:CasterWx/terraria-docker-server.git
4. ADD

拷贝文件或者目录到镜像中,会自动解压压缩包与下载网络URL到目标地址,可以拷贝要执行的jar或者软件包,之后再使用CMD启动

格式:ADD

ADD antzuhl.jar /optADD http://antzuhl.cn/download/antzuhl.jar /opt
5. COPY

类似于ADD,但是只是拷贝,不会有其他操作。

COPY antzuhl.jar /opt
6. WORKDIR

为RUN,CMD,COPY,ADD等命令设置工作目录

WORKDIR /opt
7. VOLUME

指定容器挂载点到宿主机的目录,类似于docker run时-v参数

VOLUME ["/opt/antzuhl"]
8. EXPOSE

指定容器运行的服务端口

EXPOSE 7777
9. ENV

配置容器内环境变量信息

ENV MYSQL_ROOT_PASSWORD 123456ENV JAVA_HOME /usr/local/jdk1.8.0_45
10. CMD

启动容器时执行的命令,用于启动容器内的软件包等,同样支持使用数组参数

CMD ["./opt/terraria/terra_script.sh","start"]CMD ./opt/terraria/terra_script.sh start
11. ENTRYPOINT

ENTRYPOINT与CMD命令类似,有多个ENTRYPOINT时,容器启动只会执行最后一个

ENTRYPOINT /bin/bash -C '/start.sh'

二. Dockerfile实战Spring Boot项目

创建一个最基础的Spring boot项目,Dockerfile为我编写的镜像创建Dockerfile文件,apache-maven压缩包为准备的maven包,通过ADD命令添加到镜像内,sell为一个简单的Spring boot代码,端口8080。

6d7fbabd9f42887889f8996f7543d42b.png

# 基础镜像,运行在一个拥有java的环境FROM  williamyeh/java8:latest# 维护者信息MAINTAINER AntzUhl # 将maven包添加到镜像内ADD apache-maven-3.3.9-bin.tar.gz /usr/local/bin# 配置maven相关环境变量RUN export PATH=apache-maven-3.3.9/bin:$PATHRUN export PATH=/usr/local/bin/apache-maven-3.3.9/bin:$PATHRUN ln -s /usr/local/bin/apache-maven-3.3.9/bin/mvn /usr/local/bin/mvnRUN ls -l /usr/local/binRUN echo $PATH# 开放端口8080EXPOSE 8080# 创建目录RUN mkdir /opt/sell# 把代码拷贝到创建的目录ADD sell/ /opt/sell# 设置运行环境WORKDIR /opt/sell# mvn打包RUN mvn clean install# 执行打包好的jar文件CMD java -jar target/sell.jar

完成后使用docker build -t sell:test .开始创建镜像

sell:test为镜像名称,.代表当前目录。

cee7f69f55487b366f0b1097b1b7e3d3.png

现在就可以使用docker run来创建镜像,访问localhost:8080即可。

三. Dockerfile实战创建泰拉瑞亚服务器

此外,还可以使用dockerfile来帮助我们简化一些常用的部署操作,比如泰拉瑞亚服务器的部署

# 基础镜像,centos7FROM centos:7MAINTAINER AntzUhl # 执行用户rootUSER root# 安装依赖RUN yum -y updateRUN yum -y install screen# 开放端口EXPOSE 7777RUN mkdir /opt/terraria/ADD terraria/ /opt/terraria/# 给执行脚本权限RUN chmod 775 /opt/terraria/terra_script.sh# 执行CMD ["./opt/terraria/terra_script.sh","start"]

可参考我的一个泰拉脚本: https://github.com/CasterWx/terraria-docker-server

使用docker build -t terraria:test .构建镜像即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值