安装目的
- 本文是《用docker部署WEB项目》的第二篇
- alpine是docker官方推荐的linux发行版,基于它制作docker,文件体积会小很多
- alpine和常用的centos、ubuntu等相比还是会有一些区别,所以需要通过今天的练习进行一些了解。
前置条件
- 学习 Docker从入门到实践
- 测试环境建议为windows10专业版和ubuntu16.04,其它环境本人未测试
- 已在服务器上安装docker ce和docker-compose
- 已学习过使用docker-compose安装pure-ftp
新建容器并进入内部
docker run -it -p 18080:80 -p 21:21 -p 3306-3306 php:7.2.4-fpm-alpine3.6 /bin/sh
指定国内镜像源
- 输入命令行打开repositories文件
cd /etc/apk
vi repositories
- 在文件中输入源地址:
http://mirrors.aliyun.com/alpine/v3.6/main
http://mirrors.aliyun.com/alpine/v3.6/community
安装nginx
安装
apt add --no-cache nginx
保护pid
cd /run
mkdir nginx
新建设置网页
- 新建一个网页index.html
cd /var/www/html
vi index.html
- 写一个简单的html页面或是只输入一行文字如
hello world
修改nginx的配置文件
- 修改配置文件/etc/nginx/conf.d/default.conf,只保留最基本配置
server {
listen 80 default_server;
location / {
index index.html;
root /var/www/html;
}
location = /404.html {
internal;
}
}
运行nginx
- 输入命令行重启nginx
nginx -s reload
- 打开浏览器,输入http://127.0.0.1:18080 ,看到网页显示hello world,nginx安装成功。
/usr/sbin/nginx -c /etc/nginx/nginx.conf
验证成功
打开浏览器,输入127.0.0.1,看到网页显示hello world,nginx安装成功。
在网站中启用php
添加PHP支持
- 修改/etc/nginx/conf.d/default.conf文件,增加php支持
server {
listen 80;
index index.html index.php;
location / {
index index.html;
root /var/www/html;
#实现PHP伪静态
try_files $uri /index.php?$args;
}
# You may need this to prevent return 404 recursion.
location = /404.html {
internal;
}
#添加php支持
location ~ .php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
请确认 /etc/nginx/nginx.conf中包含include config.d/*.conf语句,否则default.conf将不会生效,另外,nginx.conf中如果已经有一个server服务器,也可能造成端口冲突,这些问题的处理方式,和其它linux发行版是一样的。
新建测试用的php文件
- 输入命令行新建一个info.php文件
vi info.php
- 写一个简单的php文件如:
<?php
phpinfo();
- 输入命令行新建一个index.php文件
vi index.php
- 写一个简单的php文件如:
<?php
echo 'Hello php';
重启php和nginx服务
- 输入命令行重启服务
php-fpm --daemonize
nginx -s reload
验证成功
- 打开浏览器访问http://127.0.0.1:18080/info.php 会显示phpinfo信息,php支持已安装成功
- 打开浏览器访问http://127.0.0.1:18080/anyting 会显示hello php,伪静态已设置成功
安装常用php组件
- alpine提供了docker-php-ext-install来安装常用的php扩展,当前已支持如下扩展
Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp hash iconv imap interbase intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip
由于我们选择的镜像不是最基本的alpine而是php:7.2.4-fpm-alpine3.6 ,这些镜象其实都已经预装了,所以下面的命令只是一个示范,它会提示扩展已安装过:
- 命令来快速安装php组件
docker-php-ext-install fileinfo
如果要装这些以外的扩展就会比较复杂,这篇文章里就不提了。
安装完成
现在我们已经熟悉了alpine,接下来我会练习用dockerfile完成今天的工作,制作第一个自己的docker镜像。
版权申明
本文来自 第九区,转载请保留本段文字。