Docker:dockerfile构建php项目 [八]

Stella981
• 阅读 946

一、把项目封装成docker镜像的步骤

把项目封装成docker镜像的步骤:

1、先运行一个基础容器,手动制作docker镜像

2、编写dockerfile,构建镜像

3、测试运行

二、dockerfile常用指令参考

1、dockerfile常用指令:

FROM 这个镜像的妈妈是谁?(指定基础镜像)
MAINTAINER 告诉别人,谁负责养它?(指定维护者信息,可以没有)
RUN 你想让它干啥(在命令前面加上RUN即可)
ADD 给它点创业资金(COPY文件,会自动解压)
WORKDIR 我是cd,今天刚化了妆(设置当前工作目录)
VOLUME 给它一个存放行李的地方(设置卷,挂载主机目录)
EXPOSE 它要打开的门是啥(指定对外的端口)(-P 随机端口)
CMD 奔跑吧,兄弟!(指定容器启动后的要干的事情)(容易被替换)

2、dockerfile其他指令:

COPY 复制文件
ENV 环境变量
ENTRYPOINT 容器启动后执行的命令(无法被替换,启容器的时候指定的命令,会被当成参数)

三、可道云网盘kodexplorer项目

1、项目环境

项目:可道云网盘kodexplorer
需要的环境:httpd+php或者nginx+php
php所需模块:未知
基础镜像:centos:6.9
项目下载地址: http://static.kodcloud.com/update/download/kodexplorer4.37.zip
项目官网:https://kodcloud.com/download/

四、可道云网盘kodexplorer项目手动

1、启动容器

docker run -it -p 80:80 centos:6.9

2、安装服务软件

[root@f82cd0895416 html]# history 
  yum install httpd php php-cli unzip php-gd php-mbstring -y
  /etc/init.d/httpd start
  cd /var/www/html/
  curl -o kodexplorer4.37.zip http://static.kodcloud.com/update/download/kodexplorer4.37.zip
  unzip kodexplorer4.37.zip 
  chmod -R 777 /var/www/html/
  /etc/init.d/httpd restart

3、提交镜像

[root@luoahong kod]# docker commit luoahong centos6-ssh-http:v1

4、测试镜像

1、启动容器

[root@luoahong kod]#docker run -d -p 80:80 centos6-ssh-http:v1

2、web界面截图

Docker:dockerfile构建php项目 [八]

五、可道云网盘kodexplorer项目自动

1、编写dockerfile

[root@luoahong kod]# pwd
/opt/dockerfile/kod
[root@luoahong kod]# tree
.
├── dockerfile
├── init.sh
└── kodexplorer4.37.zip

0 directories, 3 files
[root@luoahong kod]# ll
total 13532
-rw-r--r-- 1 root root      258 Jan 17 13:44 dockerfile
-rw-r--r-- 1 root root       70 Jan 17 11:45 init.sh
-rw-r--r-- 1 root root 13845184 Jan 17 11:45 kodexplorer4.37.zip
[root@luoahong kod]# cat dockerfile
FROM centos:6.9
RUN  yum install httpd php php-cli unzip php-gd php-mbstring -y
WORKDIR  /var/www/html
COPY  kodexplorer4.37.zip .
RUN   unzip kodexplorer4.37.zip
RUN   chmod -R 777 /var/www/html
ADD   init.sh /init.sh
EXPOSE 80
CMD ["/bin/bash","/init.sh"]
[root@luoahong kod]# cat init.sh
#!/bin/bash
/etc/init.d/httpd start
tail -F /var/log/httpd/access_log

2、构建镜像

[root@luoahong kod]#docker build -t kod:v1 .

3、测试运行

1、启动容器

[root@luoahong kod]# docker run -d -P kod:v1
f2e286474958ee74a06328fadc4a1839a09bb4fdb8ed1f66c649881b6cff5494
[root@luoahong kod]# docker ps -a -l
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                   NAMES
f2e286474958        kod:v1              "/bin/bash /init.sh"   12 seconds ago      Up 12 seconds       0.0.0.0:32768->80/tcp   sad_kilby
[root@luoahong kod]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:81:a7:80 brd ff:ff:ff:ff:ff:ff
    inet 192.168.228.133/24 brd 192.168.228.255 scope global dynamic eth0
       valid_lft 1480sec preferred_lft 1480sec
    inet6 fe80::20c:29ff:fe81:a780/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 02:42:1b:26:a7:af brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:1bff:fe26:a7af/64 scope link
       valid_lft forever preferred_lft forever
11: veth8674b65@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP
    link/ether 5a:90:13:a4:70:28 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::5890:13ff:fea4:7028/64 scope link

2、登录测试

Docker:dockerfile构建php项目 [八]

3、桌面截图

Docker:dockerfile构建php项目 [八]

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Docker容器化【Docker镜像与容器相关命令】
\Docker学习目标:掌握Docker基础知识,能够理解Docker镜像与容器的概念完成Docker安装与启动掌握Docker镜像与容器相关命令掌握TomcatNginx等软件的常用应用的安装掌握docker迁移与备份相关命令能够运用Dockerfile编写创建容器的脚本能
Stella981 Stella981
3年前
Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上
这个系列的前两篇文章,我们已经把我们的应用成功地在Docker里通过nginx运行了起来,并且用dockerfile里制作好了一个镜像。Docker入门系列之一:在一个Docker容器里运行指定的web应用(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.jiansh
Wesley13 Wesley13
3年前
4、Docker 镜像构建
Docker镜像构建构建分为两种手动构建自动构建dockerfile手动构建首先启动一个Centos容器,然后在容器中安装一个nginxroot@node~dockerrunitnamenginxmancentosroot@b825
Stella981 Stella981
3年前
Dockerfile构建镜像及相关命令
Dockerfile镜像描述文件Dockerfile是一个包含用于组合镜像的命令的文本文档Docker通过读取Dockerfile中的指令按步自动生成镜像dockerbuildt机构/镜像名<:tagsDockerfile目录Dockerfile基础命令FROM基
Stella981 Stella981
3年前
Docker 容器健康检查
!DOCKERHEALTHCHECK(https://imgblog.csdnimg.cn/20210120134741738.jpg)Docker容器健康检查指的是在Dockerfile中使用HEALTHCHECK指令对容器的运行状态进行检查,并在dockerps的STATUS栏显示healthy/unhealt
Stella981 Stella981
3年前
Dockerfile 详解
一.Dockerfile基本结构一般的,Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。’’为Dockerfile中的注释。先看下面一个小例子:ThismyfirstnginxDockerfileVersion1.0
Stella981 Stella981
3年前
Docker学习——多阶段构建(六)
之前的做法在Docker17.05版本之前,我们构建Docker镜像时,通常会采用两种方式:全部放入一个Dockerfile一种方式是将所有的构建过程编包含在一个Dockerfile中,包括项目及其依赖库的编译、测试、打包等流程,这里可能会带来的一些问题:1、Dockerfile特别长,可维护性降低2、镜像层次多,镜像体积较大,
Stella981 Stella981
3年前
Dockerfile ENV 使用指南
!docs.docker.com(https://imgblog.csdnimg.cn/20210124161800640.png)当使用Dockerfile进行构建镜像时,有时会需要设置容器内的环境变量。ENV指令的格式如下:ENV<key<value...ENV指令将环境变量<key