projectfile./├──Dockerfile├──env.php├──index.php└──runtime├──cache└──logsDockerfile#baseimageFROMphp:7.4-cli#executedockerbuild命令的目录为构建的根目录#COPY根据这个根目录复制文件#/runtime不是宿主机的文件路径而是一个以当前构建目录为根目录的虚拟文件系统COPY./apps/demoCOPY/runtime/apps/demo/runtime#WorkingdirectoryWORKDIR/apps/demo#BuildruntimeparametersonlyapplytobuildandrunARGARG_1=helloARGARG_2=worldRUNecho"ARGdefinesvaronlyinbuildingruntime:$ARG_1$ARG_2"#运行时可以使用环境变量使用-ename=val覆盖#容器可以访问ENVAPP_NAME=""ENVAPP_VER="0.0.1"ENVAPP_PORT="8888"#暴露端口EXPOSE$APP_PORTRUNecho"APP_PORT${APP_PORT}"#注意如果你想在入口点使用envarg你应该使用纯文本但数组模式ENTRYPOINTphp-S0.0.0.0:$APP_PORT注意:ENTRYPOINT/CMD如果你需要引用环境变量,你只能使用ENTRYPOINT命令xxx。Tips:如果需要登录容器再启动服务,可以设置启动一个bash会话,保证容器不退出ENTRYPOINT["bash","-c","echowelcometodocker》】不管怎样,入口程序必须要有session特性,否则运行命令后容器会自动退出。index.php
