dockerfile的一些语法

本文详细介绍如何使用Dockerfile从CentOS 7基础镜像开始,安装一系列开发工具和库,包括wget、tar、bzip2、gcc、make、cmake等,以及配置中文环境。进一步安装并构建Boost库,MXML,阿里云OSS C SDK和MQ SDK,为复杂应用提供全面的开发环境。

FROM centos:centos7
MAINTAINER luomei

# Install prepare infrastructure
RUN yum -y update && \
 yum -y install wget && \
 yum -y install tar 
RUN yum -y install bzip2

RUN localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
ENV LANG zh_CN.UTF-8  
ENV LANGUAGE zh_CN:zh  
ENV LC_ALL zh_CN.UTF-8 
 
RUN yum -y install net-tools

RUN yum -y install less

#RUN yum -y install java-1.8.0-openjdk-devel.x86_64 && yum install -y java-1.8.0#-openjdk-debuginfo --enablerepo=*debug*

#RUN echo "root:Docker!" | chpasswd
 
# Create tomcat user
#RUN groupadd -r admin && \
# useradd -g admin -s /sbin/nologin  -c "Tomcat user" admin 
 
WORKDIR /home/admin

#install c++ 
RUN yum -y install gcc gcc-c++
RUN yum -y install make
RUN yum -y install cmake
RUN yum -y install gdb
#new package and copy all to it
RUN mkdir /package
WORKDIR /package
ADD . .

#install boost,used in mq
WORKDIR /package
RUN bzip2 -d boost_1_62_0.tar.bz2
RUN tar -xvf boost_1_62_0.tar
WORKDIR /package/boost_1_62_0
RUN ./bootstrap.sh
RUN ./b2 link=shared runtime-link=shared || echo "errors in make boost"
RUN ./b2 install || echo "errors in install boost"
RUN ldconfig -v|grep libboost || echo "errors in show boost lib"


#install oss

RUN yum -y install curl-devel apr-devel apr-util-devel
WORKDIR /package
RUN tar -xvf mxml-2.9.tar
WORKDIR /package/mxml-2.9/
RUN ls
RUN pwd
RUN ./configure
RUN make
RUN make install
WORKDIR /package
RUN tar -xvf aliyun-oss-c-sdk-3.5.0.tar
WORKDIR /package/aliyun-oss-c-sdk-3.5.0
RUN cmake .
RUN make 
RUN make install

#install mq

WORKDIR /package
RUN yum -y install zip unzip
RUN unzip aliyun-mq-linux-cpp-sdk.zip || echo "error in install mq"


#EXPOSE 8080
#EXPOSE 8009

ENTRYPOINT tail -f /etc/passwd
 

### Dockerfile 语法规范 Docker 使用一种简单的指令集来定义如何构建镜像,这些指令被写入到名为 `Dockerfile` 的文件中。每条指令都对应着一个操作,在构建过程中依次执行。 #### 基础结构与注释 为了使 Dockerfile 更具可读性和目的性,建议以注释开头说明该文件的作用及其基础环境[^4]: ```dockerfile # Dockerfile to build MongoDB container images # Based on Ubuntu ``` 这样的做法不仅有助于团队协作中的沟通效率提升,也方便后续维护人员理解当前配置意图。 #### 关键字与参数 以下是几个重要的关键字及相应的解释: - **FROM**: 定义基础镜像,所有 Dockerfiles 都应该以此作为第一条有效指令; - **RUN**: 执行命令并提交结果;可以用来安装软件包等初始化工作; - **WORKDIR**: 设置工作目录,此后的各层都将在此路径下运行,并影响最终容器启动时的工作位置[^5]; - **COPY/ADD**: 将本地文件复制到容器内的指定位置,其中 ADD 提供更多功能如自动解压 tar 文件等; - **EXPOSE**: 声明端口映射关系,告知外界哪些服务可以通过特定端口访问容器内部应用; - **CMD 或 ENTRYPOINT**: 指定容器启动后要执行的默认命令或入口程序。两者区别在于 CMD 可由 docker run 参数覆盖而 ENTRYPOINT 不行。 #### 实践案例:创建 Nginx 镜像 下面是一个具体的例子,展示了如何利用上述概念编写一份完整的 Dockerfile 来创建基于官方 NGINX 映像的新版本[^2]: ```dockerfile # Use the official nginx as base image FROM nginx:latest # Set working directory inside container WORKDIR /usr/share/nginx/html # Copy static files into place within container filesystem COPY ./public . # Expose port 80 so that we can access web server externally EXPOSE 80 # Start up nginx when running this container CMD ["nginx", "-g", "daemon off;"] ``` 这段脚本首先指定了使用最新的稳定版 NGINX 作为起点,接着设置了 Web 应用的工作区,再把项目根目录下的 public 文件夹的资源拷贝过去,最后声明开放 HTTP 默认监听端口号以便外部请求能够到达服务器进程。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值