- 准备Dockerfile
 
FROM composer:1.6.5 as build 
WORKDIR /app 
COPY . /app 
RUN composer install
FROM php:7.1.8-apache 
EXPOSE 80 
COPY --from=build /app /app 
COPY vhost.conf /etc/apache2/sites-available/000-default.conf 
RUN chown -R www-data:www-data /app \ 
  && a2enmod rewrite
- 切换到项目目录
 
cd /path/to/your/project
- 在项目目录中添加vhost.conf
 
<VirtualHost *:80>
  DocumentRoot /app/public
  <Directory "/app/public">
    AllowOverride all
    Require all granted
  </Directory>
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- 打包镜像
 
docker build -t yourname/laravel-kubernetes-demo .
- 运行示例程序
 
docker run -ti -p 8080:80 -e APP_KEY=base64:cUPmwHx4LXa4Z25HhzFiWCf7TlQmSqnt98pnuiHmzgY=  laravel-kubernetes-demo
示例程序可以通过 http://localhost:8080 访问。
在这个安装中,容器是通用的,同时 APP_KEY 并不是写死或共享的。
页面可以正常访问,但数据库连接不上,报错数据库驱动找不到。
- 解决数据库驱动问题
 
进入容器:
docker exec -ti 容器Id  bash
查看php扩展
php -m (发现php扩展中缺少pdo_mysql扩展)
安装pdo_mysql扩展
docker-php-ext-install pdo pdo_mysql
安装成功后退出容器并停止容器
- 启动本地镜像仓库打tag并上传
 
docker run -d -p 5000:5000 --restart=always  registry:2
docker commit -m "提交内容"  容器id imageName:Version
docker tag yourname/laravel-k8s 127.0.0.1:5000/laravel-k8s
docker push 127.0.0.1:5000/laravle-k8s
docker rmi 旧镜像
- 重建Dockerfile
 
FROM composer:1.6.5 as build
WORKDIR /app
COPY . /app
RUN composer install
FROM 127.0.0.1:5000/laravle-k8s
# 暴露 80 端口
EXPOSE 80
- 重新build镜像
 
docker build -t yourname/laravel-k8s .
- 重新运行
 
docker run -ti -p 8080:80 -e APP_KEY=base64:cUPmwHx4LXa4Z25HhzFiWCf7TlQmSqnt98pnuiHmzgY=  yourname/laravel-k8s
- k8s(基于docker for mac,亦可使用Minikube)
 
kubectl run laravel-k8s  --image=yourname/laravel-k8s  --port=80  --image-pull-policy=IfNotPresent  --env=APP_KEY=base64:cUPmwHx4LXa4Z25HhzFiWCf7TlQmSqnt98pnuiHmzgY=
开放服务端口
kubectl expose deployment laravel-yxd  --type=NodePort --port=80
- 
查看服务
image.png 访问本机IP:30081端口即可(pdo_mysql扩展已装上,可正常访问数据库)
开启k8s Web UI
kubectl proxy

