(1)完成Docker-compose的安装
参考资料:Docker Compose|菜鸟教程
- 运行以下命令以下载 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
- 测试是否安装成功:
docker-compose --version
(2)Dockerfile编写
- 下载镜像
- 创建各个文件
- mysql
#基础镜像
FROM mysql:5.7
#维护者信息
MAINTAINER lin
- nginx-Dockerfile
# Base images 基础镜像
FROM nginx:latest
#MAINTAINER 维护者信息
MAINTAINER lin
- nginx-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
#基础镜像
FROM php:7.4-fpm
#作者信息
MAINTAINER lin
#更换镜像源
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
#安装扩展pdo
RUN apt-get clean && 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 --with-jpeg
&& docker-php-ext-install gd
(3)使用Compose实现多容器运行机制
- docker-compose.yml
version: "3"
services:
nginx:
build: ./nginx
ports:
- "80:80"
links:
- "phpfpm"
volumes:
- ./html/:/var/www/html/
- ./nginx/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 docker-compose up -d
(4)服务测试
参考资料:菜鸟教程
- 测试访问index.html和index.php
- 连接mysql
- 创建数据库
- 终端进入mysql容器,查看数据库是否创建成功
- 创建数据表
- 插入数据
- 修改数据
- 删除数据
(5)(选做)增加一个phpmyadmin容器,实现web端的数据库管理
- phpmyadmin-Dockerfile
#基础镜像
FROM phpmyadmin/phpmyadmin:latest
#作者信息
MAINTAINER lin
- docker-compose.yml末尾
phpmyadmin:
build: ./phpmyadmin
ports:
- "7070:80"
links:
- "mysql"
environment:
- PMA_ABRITRARY=1
- PMA_HOST=mysql
(6)困难
docker-compose.yml文件中的路径一定要相对应,如果下一步sudo docker-compose up -d出现个别运行不起来,可能是docker-compose.yml文件中的路径出错了
选做中拉取容器的命令容易出错
本次作业大约花费了一天的时间