docker 打包 php 应用

项目文件

./
├── Dockerfile
├── env.php
└── index.php

Dockerfile

#基础镜像
FROM php:7.4-cli

# copy 当前宿主机目录下的内容到镜像目录
COPY . /apps/demo

# 设置工作目录
WORKDIR /apps/demo

# 定义一些环境变量作为运行参数
ENV APP_NAME=""
ENV APP_VER="0.0.1"

# 设置容器入口程序(此时的 pwd 在工作目录下)
ENTRYPOINT ["php", "./index.php"]

tips: 如果需要登录容器后再启动服务,可以设为启动一个 bash 会话来保证容器不退出

ENTRYPOINT ["bash", "-c", "echo welcome to docker"]

反正入口程序一定要有 会话保持 的特性,否则容器运行完命令后就会自动退出了。

index.php

<?php
// loop 作为入口程序 防止容器运行结束自动退出
// 生产中大都是 http、websocket、tcp 等服务
while (true) {
    echo "hello docker" . PHP_EOL;
    sleep(3);
}

env.php

<?php
// 读取容器中的环境变量
echo getenv("APP_NAME") . PHP_EOL;
echo getenv("APP_VER") . PHP_EOL;

打包镜像

# 打包要养成版本号的良好习惯
docker build -t php-demo:v1 .
docker build -t php-demo:v2 .

# 查看本地镜像
docker images

创建/运行容器

# 使用镜像创建容器 传入环境变量
docker run -it \
--privileged=true \
-e APP_NAME="php-demo-1" \
-e APP_VER="1.0.1" \
--name php-demo-1 php-demo:v1

# 查看容器
docker ps

# 登录容器
docker exec -it php-demo-1 bash

# 读取环境变量
php env.php

文件 cp

# 拷贝宿主机文件到容器
docker cp tmp.php php-demo-1:/apps/demo
# 拷贝容器文件到宿主机
docker cp php-demo-1:/apps/demo/env.php env.php

规范至上

1.7k 声望
121 粉丝
0 条评论
推荐阅读
如何使用 PHPStorm 进行优雅的项目开发?
PHP Storm 这个开发工具,很多 phper 应该有所耳闻,甚至也有不少人使用其作为生产工具,但是很多人都没有最大限度的使用它,本文就来总结一些优雅开发的小技巧。

唯一丶45阅读 4.8k评论 7

怎样用 PHP 来实现枚举?
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,...

唯一丶25阅读 6.3k评论 4

Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go5阅读 1.8k评论 2

封面图
张晋涛:我的 2022 总结
大家好,我是张晋涛。2022 年已经结束,我每年都会惯例的做个小回顾,今年因为阳了在恢复身体,一直拖到了今天才写。生活在 2022 年初做回顾的时候,觉得 2021 是魔幻的一年,但现在看来 2022 年其实更加魔幻。一...

张晋涛6阅读 634评论 2

封面图
Docker学习:Image的本地存储结构
在使用Docker时候,针对镜像的操作一般就是docker pull,docker build,docker commit(刚开始接触Docker的时候,还不会Dockerfile,经常使用这个命令,但是经历了一次血的教训,已经放弃这个命令很久)这些操作...

backbp4阅读 9.7k评论 3

利用Docker部署管理LDAP及其初次使用
前言:本周主要写了gitlabWebhook转github的项目,总体上没有遇到什么大问题,这周接触到了LDAP,于是就花时间实际操作了解了一下。

李明5阅读 829

微信公众号开发:自动回复文本/图片/图文消息/关键词回复/上传素材/自定义菜单
对接流程1、申请微信公众号测试账号URL:[链接]2、登录,配置开发者服务器URL和Token开发者服务器配置代码:config.php {代码...} URL是config.php在你服务器的URLToken是上面代码自己设置的Token搞定之后,就能完...

TANKING2阅读 10k

规范至上

1.7k 声望
121 粉丝
宣传栏