我的项目文件

./├── 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