完成Docker-compose的安装
①下载docker-compose最新版本
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
②修改目录权限,否则后续docker-compose up命令会报错
sudo chmod +x /usr/local/bin/docker-compose
创建软连接至一个PATH目录下,一般为/usr/bin
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
③
docker-compose --version 出现版本号表示安装成功
Dockerfile编写
①创建项目文件夹: touch docker-compose.yml dockerfile_mysql dockerfile_nginx dockerfile_php default.conf && mkdir mysql_data web && tree,其中default.conf为nginx的默认配置文件,mysql_data用来挂载mysql目录,web用来挂载nginx和php的目录
②拉取需要的镜像
mysql: docker pull mysql
docker pull php:7.4-fpm
③编辑配置文件
- dockerfile_mysql
#基础镜像
FROM mysql
#作者信息
MAINTAINER lqy
#设置root密码
ENV MYSQL_ROOT_PASSWORD admin
#禁止空密码登录
ENV MYSQL_ALLOW_EMPTY_PASSWORD no
- dockerfile_php
#基础镜像
FROM php:7.4-fpm
#作者信息
MAINTAINER lqy
RUN apt-get update && apt-get install -y
libfreetype6-dev
libjpeg62-turbo-dev
libpng-dev
&& docker-php-ext-install pdo_mysql
&& docker-php-ext-configure gd --with-freetype --with-jpeg
&& docker-php-ext-install -j$(nproc) gd
- dockerfile_nginx
#基础镜像
FROM nginx
#作者信息
MAINTAINER lqy
#声明暴露的端口
EXPOSE 80
- default.conf
server {
listen 80; #修改映射端口
server_name localhost;
location / {
root /web/html; #修改工作目录
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ .php$ {
root /web/php; #修改工作目录
fastcgi_pass myphp:9000; #修改为容器名
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
- docker-compose.yml
version: "3"
services:
nginx:
image: mynginx_image #指定镜像名
container_name: mynginx #指定容器名
build:
context: .
dockerfile: dockerfile_nginx #指定dockerfile文件
ports:
- "80:80" #修改端口映射
volumes:
- ./web:/usr/local/lnmp/web/html #挂载容器卷,本地/容器内修改文件后,另一方都会同步更新;
- ./default.conf:/etc/nginx/conf.d/default.conf #挂载配置文件
php:
image: myphp_image
container_name: myphp
build:
context: .
dockerfile: dockerfile_php
environment:
MYSQL_PASSWORD: admin #设置好环境变量,在php代码中使用变量名直接引用
volumes:
- ./web:/usr/local/lnmp/web/php #挂载工作目录到本机web目录
mysql:
image: mysql_image
container_name: mysql
build:
context: .
dockerfile: dockerfile_mysql
ports:
- "3306:3306"
volumes:
- ./mysql_data:/var/lib/mysql #挂载容器卷,实现数据同步,防止数据丢失
④在web目录中新建index.html和index.phpcd web && touch index.html index.php并编辑
#index.html
HELLO LQY
#index.php
<?php phpinfo();?>
使用Compose实现多容器运行机制
①执行docker-compose文件docker-compose up -d --build
②查看容器 docker ps -a和docker images镜像
③分别访问测试页面index.html和index.php
(4)服务测试
①进行连接部分修改
②创建数据库成功
③创建数据表成功
④新纪录插入成功
⑤修改成功
⑥mysql查看
主要问题和解决方法
①那个选做,不是我不想做啊,我耗费了一个晚上,还是卡在了这里
②还是编译文件
我的文件内容,像地址用户名什么的每次都会出一点问题,所以下次我一定要细心细心再细心,不能浪费太多时间