Dockerfile 将自己的项发布到Docker中(四)

文章目录

    • 文章参考
    • 问题描述
    • What is Dockerfile
      • 作用
      • 常用命令参数
    • 项目发布到Docker镜像
      • 案例一:将 nodejs 项目发布到Docker 中
      • 案例一:Dockerfile 创建JDK

文章参考

  1. Docker实践–部署Nodejs应用
  2. Dockerfile命令详解

问题描述

我们开发好了自己的一个应用,如何发布到Docker镜像中了,然后发布到容器中提供给用户使用?

What is Dockerfile

Dockerfile 是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像

作用

  • 开发人员:可以为开发团队提供一个完全一致的开发环境
  • 测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作
  • 运维人员:在部署时,可以实现应用的无缝移植

常用命令参数

命令 说明
FROM 指定基础镜像,必须为dockerfile中的第一个命令
MAINTAINER 维护者信息
RUN 构建镜像时执行的命令,一个文件中可以包含多个RUN命令
CMD 构建容器后调用,也就是在容器启动时才进行调用,存在多个CMD时只有最后一个生效,也支持exec语法。
ADD 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
COPY 功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
ENV 设置环境变量
WORKDIR 指定工作目录,类似于cd命令,之后的命令都是基于此工作目录

项目发布到Docker镜像

案例一:将 nodejs 项目发布到Docker 中

  1. 创建一个 server.js 文件
'use strict';

var express = require('express');

var PORT = 8888;

var app = express();
app.get('/', function (req, res) {
     
  res.send('Hello world\n');
});

app.listen(PORT);
console.log('Running on http://localhost:' + PORT);
  1. 创建一个package.json 工程文件,内容如下
{
     
  "name": "docker_nodepro",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
     
    "start": "node server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
     
    "express": "^4.17.1"
  }
}
  1. 创建 Dockerfile
FROM node

# Create app directory
RUN mkdir -p /home/Service
WORKDIR /home/Service

# Bundle app source
COPY . /home/Service
RUN npm install

EXPOSE 8888
CMD [ "npm", "start" ]
  1. 将工程文件全部拷贝到服务器上

Dockerfile 将自己的项发布到Docker中(四)_第1张图片

  1. 根据Dockerfile 构建镜像,名字为 mynodeapp
docker build -t mynodeapp .

Dockerfile 将自己的项发布到Docker中(四)_第2张图片

  1. 根据构建的镜像创建Docker容器
docker run -di --name=mynodeapp -p 8080:8888 mynodeapp1

说明:

  • 创建的容器名字是 mynodeapp1
  • 访问服务器的8080端口,会映射到Docker容器的 8888 端口
  1. 在地址栏中输入 http://123.57.13.12:8080/ 验证

Dockerfile 将自己的项发布到Docker中(四)_第3张图片

案例一:Dockerfile 创建JDK

# 基础镜像
FROM centos
# 作者
MAINTAINER dockerzlnewbie

# 创建 /usr/local/java 文件夹
RUN mkdir /usr/local/java

# 将JDK文件拷贝到 /usr/local/java 目录中,并解压
ADD jdk-8u141-linux-x64.tar.gz /usr/local/java/

# 添加一个软链接
RUN ln -s /usr/local/java/jdk1.8.0_144 /usr/local/java/jdk

# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH

你可能感兴趣的:(Docker,kubernets,微服务,大数据)