一、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 SmithENV 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可以构建出一个可以运行自己应用程序的镜像,可以轻松地在不同环境中进行部署和运行。