您的位置:

Dockerfile详解

一、Docker和Dockerfile

Docker是一个开源的应用容器引擎,可以打包应用程序和系统依赖,并轻松地将其移植到任何环境中。Dockerfile是一种文本文件,包含了构建一个Docker镜像的命令。

二、基本语法

使用Dockerfile来构建镜像需要遵循一些基本语法。

1. 以FROM开始

FROM ubuntu:18.04

这行代码指定了镜像的基础镜像,即当前Dockerfile所基于的镜像,这里指定了Ubuntu 18.04。

2. 使用RUN执行命令

RUN apt-get update && apt-get install -y wget

这行代码使用RUN命令在当前镜像中执行了更新apt-get并安装wget的操作。

3. 使用COPY复制文件

COPY requirements.txt /app/

这行代码会将当前Dockerfile相对路径下的requirements.txt文件复制到镜像的/app/目录下。

4. 使用WORKDIR设置工作目录

WORKDIR /app

这行代码指定镜像的工作目录为/app。

5. 使用EXPOSE声明开放的端口

EXPOSE 8000

这行代码声明了该镜像中开放的端口为8000。

6. 使用CMD设置默认执行命令

CMD ["python", "app.py"]

这行代码设置了当这个镜像被启动时,运行python app.py命令。

三、一些实例

1. 构建一个Python web应用程序:

FROM python:3.7

COPY requirements.txt /app/
WORKDIR /app
RUN pip install --trusted-host pypi.python.org -r requirements.txt

COPY . /app
ENV PORT 80
EXPOSE 80

CMD ["python", "app.py"]

2. 在镜像中安装Node.js:

FROM debian:jessie

RUN apt-get update && apt-get install -y curl

RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -

RUN apt-get install -y nodejs

3. 构建一个Tomcat的Java应用程序:

FROM tomcat:8.0.20-jre8
MAINTAINER John Smith 

ENV MYSQL_DB_HOST=localhost \
    MYSQL_DB_PORT=3306 \
    MYSQL_DB_NAME=mydatabase \
    MYSQL_DB_USER=root \
    MYSQL_DB_PASS=mydatabase_password

COPY conf/tomcat-users.xml /usr/local/tomcat/conf/
COPY conf/context.xml /usr/local/tomcat/conf/
COPY target/mywebapp.war /usr/local/tomcat/webapps/

  

四、总结

以上是Dockerfile的基本语法和一些实例,通过Dockerfile可以构建出一个可以运行自己应用程序的镜像,可以轻松地在不同环境中进行部署和运行。