IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Docker学习(二)之Docker 安装 lamp环境(1) -> 正文阅读

[PHP知识库]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
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 21:55:31  更:2022-03-11 21:56:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:41:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码