当前位置:   article > 正文

K8S云管平台开发实践 - Dockerfile

K8S云管平台开发实践 - Dockerfile

历经大半年,自研的k8s云管理平台终于算是完成了一阶段的开发目标。最近打算整理一下开发中遇到的各种问题和坑。温故而知新,也许能有新的收获。
想到哪写哪,也因为最近测试阶段,主要工作放在将传统应用转化为Docker容器应用,所以第一篇我打算写下Dockerfile。

如何使用Dockerfile将传统应用快速改造为容器镜像

1. Dockerfile文件内容(注意,文件名就是Dockerfile,不带后缀)

一般来说,Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令、容器启动指令

########################################################## 
# Dockerfile to run a flask-based web application# Based on an jsk:8 image 
##########################################################
# Set the base image to use to centos 
FROM codenvy/jdk8
# Set the file maintainer 
MAINTAINER jasonwang,wjs7740@163.com

# Set env varibles used in this Dockerfile (add a unique prefix, such as DOCKYARD) 
# Local directory with project source 
ENV DOCKYARD_SRC=k8scmp
# Directory in Container for all project files 
ENV DOCKYARD_SRCHOME=/opt 
# Directory in container for project source files 
ENV DOCKYARD_SRCPROJ=/opt/jar

# set container user:root
USER root

# Copy application source code to SRCDIR 
COPY $DOCKYARD_SRC $DOCKYARD_SRCPROJ

# Create application subdirectories 
WORKDIR $DOCKYARD_SRCPROJ 
RUN mkdir log 
VOLUME ['$DOCKYARD_SRCPROJ/log/']

# Sync container time
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# Port to expose 
EXPOSE 8000

WORKDIR $DOCKYARD_SRCPROJ 

# set start script
ENTRYPOINT["python","manage.py","runserver -p 8000"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

挑其中重要的说一说:
a) RUN、ENV、EXPOSE为镜像操作指令。每运行一条指令,镜像就添加新的一层;CMD是用来指定运行容器是的指令
b) USER root:指定登录容器的用户,最好设置为root,否则执行某些命令是可能会有问题
c) 设置时区:看基础镜像的时区,如果不设置,可能某些情况会是伦敦时间,日志输出会早八小时
d) CMD\ENTRYPOINT 指令都只能有一个,如果多个则只执行最后一个;另外注意有三个参数

2. build镜像
# 在Dockerfile同级目录下
sudo docker build -t jason/webdemo .
  • 1
  • 2

成功后显示Successfully,同时返回镜像ID,如图:
这里写图片描述

3.push镜像到harbor
docker tag imageid tagname(docker-hub:80/workflow/k8scmp)
docker push tagname(docker-hub:80/workflow/k8scmp)
  • 1
  • 2
  • 3
4.运行k8scmp
sudo docker run -d --restart=always \
-p 8000:8000 \
--add-host docker-hub:182.xxx.xx.xxx \
--name k8scmp \
tagname(docker-hub:80/workflow/k8scmp)
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/119972?site
推荐阅读
相关标签
  

闽ICP备14008679号