Docker学习(二)之Docker 安装 lamp环境(1)

Docker 安装 lamp环境(1)

Docker基础命令

熟练使用docker基本的命令,推荐:docker 的常用参数和解析.

常用命令

#主要熟练使用这几个命令
docker images # 显示本地所有的镜像列表
docker pull # 从仓库下载镜像到本地
docker rmi # 删除一个镜像
docker run # 创建并启动一个容器,本地有就启动,没有就获取docker hub的
docker start # 启动一个停止状态的容器
docker stop # 停止容器运行
docker rm # 删除一个容器
docker attach # 连接(进入)到一个正在运行的容器(推出后容器停止)
docker exec# 连接(进入)到一个正在运行的容器(推出后容器不停止)
#docker run重点参数
-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 psdocker 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
# Reading package lists... Done
# Building dependency tree
# Reading state information... Done
# E: Unable to locate package vi
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配置文件结构:

# It is split into several files forming the configuration hierarchy outlined
# below, all located in the /etc/apache2/ directory:
#
#	/etc/apache2/
#	|-- apache2.conf
#	|	`--  ports.conf
#	|-- mods-enabled
#	|	|-- *.load
#	|	`-- *.conf
#	|-- conf-enabled
#	|	`-- *.conf
# 	`-- sites-enabled
#	 	`-- *.conf

以下内容为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

# 安装mysql扩展
RUN docker-php-ext-install pdo pdo_mysql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值