Docker:dockerfile构建php项目 [八]
一、把项目封装成docker镜像的步骤
把项目封装成docker镜像的步骤:
1、先运行一个基础容器,手动制作docker镜像
2、编写dockerfile,构建镜像
3、测试运行
二、dockerfile常用指令参考
1、dockerfile常用指令:
1 2 3 4 5 6 7 8 | 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、启动容器
1 | docker run -it -p 80:80 centos:6.9 |
2、安装服务软件
1 2 3 4 5 6 7 8 | [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、提交镜像
1 | [root@luoahong kod] # docker commit luoahong centos6-ssh-http:v1 |
4、测试镜像
1、启动容器
1 | [root@luoahong kod] #docker run -d -p 80:80 centos6-ssh-http:v1 |
2、web界面截图
五、可道云网盘kodexplorer项目自动
1、编写dockerfile
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 | [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、构建镜像
1 | [root@luoahong kod] #docker build -t kod:v1 . |
3、测试运行
1、启动容器
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 | [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、登录测试
3、桌面截图
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
分类:
云计算Kubernetes
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?