Docker 安装 lamp环境(1)
Docker基础命令
熟练使用docker基本的命令,推荐:docker 的常用参数和解析.
常用命令
docker images
docker pull
docker rmi
docker run
docker start
docker stop
docker rm
docker attach
docker exec
-i: 交互式操作
-t: 终端
-p:端口
-v:挂载
-d:后台执行-w:设置工作目录-e:设置环境变量
开始安装
拉取
访问docker hub官网,搜索php,选择官方的镜像,可以发现,php提供php脚本镜像外,还提供了4个变体,分别是cli、apache、fpm、alpine ,拉取方法就是php:版本号-变体名称,比如这次想要php5.4版本
docker pull php:5.4-apache
运行
拉取到镜像后,就是运行了,运行对象可以是镜像名+TAG 或者IMAGE ID ,一般选择后者,因为唯一,本次先运行个临时容器
docker run -d -p 80:80 --rm --name php_apache b9858ffdd4d2
参数说明: -d :后台运行。-p80:80 :映射端口。--rm :容器停止后自动删除容器,因为是临时容器,所以得加省了手动删除容器。--name php_apache :自定义命名容器为php_apache。b9858ffdd4d2 :镜像ID
此时已经是可以访问自己的ip,apache生效了,不过报403错误
连接
连接容器,我们可以先连接容器进去看看,退出容器的时候输入exit或者Ctrl+d
docker exec -it 7853e6833a30 bash
参数说明: exec :退出连接后不会停止容器。-it :以终端形式进行交互式操作,就是可以在最后面加命令。7853e6833a30 :容器ID。bash :我们希望有个交互式 Shell,因此用的是bash,或者/bin/bash。
停止临时容器
docker stop 7853e6833a30
停止后发现docker ps 和docker ps -a 都没有容器了
开启新容器
本地项目地址挂载到服务路径
docker run -d -p 9000:80 --name php54apache -v /workitem/enlightv/:/var/www/html php:5.4-apache
参数说明: -v /workitem/enlightv/:/var/www/html :本地路径:服务路径
docker 下安装 vim
apt-get install vim
apt-get update
apt-get install vim
修改Apache配置
修改Apache配置文件 把AllowOverride全部改为ALL
docker exec -it 6aaf21e047e6 bash
cd /
vim /etc/apache2/apache2.conf
保存退出
修改apache2.conf 完成后
新建文件 /etc/apache2/sites-enabled/000-default.conf
vim /etc/apache2/sites-enabled/000-default.conf
添加如下内容
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName 192.168.1.101
ServerAlias 192.168.1.101
<Directory "/var/www/html">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
apache2开启rewrite模块
因为部署的是thinkPHP所以之前一直存在index.php需要手动拼接进去的问题
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
重启docker容器,containId为容器名字或容器Id
docker restart containId
apache2配置文件结构:
以下内容为thinkPHP项目使用docker的参考
使用 Docker 部署 thinkphp,需要注意几件事:
thinkphp 的入口文件在 public 目录下,所以需要将 VirtualHost 的 DocumentRoot 指向 public 目录; thinkphp 需要设置伪静态,Apache 需要加载 mod_rewrite.so 模块; 下载相应版本的 thinkphp 放到项目根目录下。
FROM php:5.6-apache
ENV THINKPHP_VERSION=5.0.21
RUN ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
&& sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf
&& sed -i 's//var/www/html//var/www/html/public/g' /etc/apache2/sites-enabled/000-default.conf
RUN curl -OL https://github.com/top-think/framework/archive/v$THINKPHP_VERSION.tar.gz
&& tar xvf v$THINKPHP_VERSION.tar.gz && mv framework-$THINKPHP_VERSION thinkphp
ADD . /var/www/html/
如果在项目中用到了扩展,使用docker-php-ext-install 命令安装相应的扩展:
RUN apt-get update && apt-get install -y libpq-dev
&& docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql
&& docker-php-ext-install pdo pdo_pgsql
RUN docker-php-ext-install pdo pdo_mysql
|