2020系统综合实践 第3次实践作业
完成Docker-compose的安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
Dockerfile编写
参考资料:Docker docker-compose 配置lnmp开发环境
-
使用docker pull 下载各自的镜像(nginx 与mysql已经下载了)
-
创建如下各个文件
请注意是default.conf文件,图片中少了一个t。
html
#index.html
welcome to lyhnginx
#index.php
<?php phpinfo();?>
mysql
#Dockerfile
#基础镜像
FROM mysql:5.7
#维护者信息
MAINTAINER lyh
nginx
#Dockerfile
# Base images 基础镜像
FROM nginx:latest
#MAINTAINER 维护者信息
MAINTAINER lyh
#default.conf
server {
listen 80;
server_name localhost;
location / {
root /var/www/html;
index index.html index.htm index.php; # 增加index.php
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.php$ {
root /var/www/html; # 代码目录
fastcgi_pass phpfpm:9000; # 修改为phpfpm容器
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 修改为$document_root
include fastcgi_params;
}
}
phpfpm
#Dockerfile
FROM php:5.6-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng12*-dev \
vim \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd \
使用Compose实现多容器运行机制
参考资料:Docker docker-compose 配置lnmp开发环境
docker-compose.yml
version: "3"
services:
nginx:
build: ./nginx
ports:
- "80:80"
links:
- "phpfpm"
volumes:
- ./html/:/var/www/html/
- ./nginx/conf/default.conf:/etc/nginx/conf.d/default.conf
phpfpm:
build: ./phpfpm
ports:
- "9000:9000"
volumes:
- ./html/:/var/www/html/
links:
- "mysql"
mysql:
build: ./mysql
ports:
- "3306:3306"
volumes:
- ./mysql/data/:/var/lib/mysql/
environment:
MYSQL_ROOT_PASSWORD : 123456
-
在compose文件夹打开终端
sudo su
docker-compose up -d
-
构建成功如下
服务测试
参考资料:菜鸟教程
-
测试访问index.html和index.php,
我装的PHP有PDO,所以采用PDO去连接数据库并进行操作
-
尝试连接mysql
servername我采用本地的IP地址
在web显示
-
创建数据库
编辑index.php
web显示
用终端进入mysql容器,查看数据库是否创建成功
-
在数据库内建表
web显示
在容器中查看建表是否成功
-
插入数据
web显示
在容器中查看插入数据是否成功
-
修改数据
web显示
在容器中查看修改数据是否成功
-
删除数据
web显示
在容器中查看删除数据是否成功
增加phpmyadmin
-
pull phpmyadmin
-
在文件夹compose中创建如下文件
Dockerfile
#Dockerfile
FROM phpmyadmin/phpmyadmin:latest
在docker-compose.yml文件末端加上
phpmyadmin:
build: ./phpmyadmin
container_name: "phpmyadmin"
ports:
- "9090:80"
links:
- "mysql"
environment:
- PMA_ARBITRARY=1
-
在web端使用phpmyadmin
-
用自己数据库的账号密码进入
-
之前建的数据库
-
使用phpmyadmin插入数据
-
使用phpmyadmin查看结果
-
使用终端查看
遇到的困难
- 创建LNMP环境时nginx报错。
我的default文件文件名打错了,害我百度了半天,所以还是要注意这些细节 - 使用php连接MySQL失败
使用localhost作为servername时出现下列错误
使用127.0.0.1作为servername时出现下列错误
最终我直接使用本机的IP地址才成功
可以使用ifconfig -a查看IP地址
这次作业大约用了我12个小时左右吧,对于这些镜像的了解更深了,也了解了docker compose的一些使用,但是还是有许多坑啊。