一、安装docker
bash
# 1、更新系统软件包:
sudo yum update
# 2、安装Docker依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、添加Docker的yum源:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、安装Docker引擎:
sudo yum install -y docker-ce
# 5、启动Docker服务:
sudo systemctl start docker
bash
# docker常用命令
# 查看版本信息
docker --version
# 查看 Docker 的详细信息
docker info
# 查看当前正在运行的 Docker 容器
docker ps
# 进入容器查看
docker exec -it <容器名称或ID> /bin/bash
二、安装docker-composer
bash
# 1、下载最新版本的Docker Compose:
curl -L https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# 或者:
curl -L http://mirror.azure.cn/docker-toolbox/linux/compose/v2.24.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
bash
# 2、添加可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
三、写docker-composer.yml配置文件
docker-compose.yml
文件是用于定义和配置多容器 Docker 应用程序的文本文件。它允许你通过一个文件来定义、配置和管理多个 Docker 容器,这些容器可以相互通信并一起运行。
找一个目录,写你的docker配置,我这边是在/home
bash
# 进入目录
cd /home
# 创建 docker-comser目录
mkdir docker-composer
# 进入docker-composer
cd docker-composer
# 创建dockoer-compser.yml
vi dockoer-compser.yml
以下是我写的一个dockoer-compser.yml示例:
bash
version: '3'
# 表示使用 Docker Compose 的版本 3 语法
services:
nginx:
image: nginx:latest
ports:
- 80:80
- 443:443
# 开启80和443的映射
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/ssl:/etc/nginx/ssl
- ./nginx/logs:/var/log/nginx
# 将主机当前目录下的 nginx/conf.d 目录与容器内的 /etc/nginx/conf.d 目录进行映射,用于共享 Nginx 的配置文件
# 将主机当前目录下的 nginx/ssl 目录与容器内的 /etc/nginx/ssl 目录进行映射,用于共享 SSL 证书文件
# 将主机当前目录下的 nginx/logs 目录与容器内的 /var/log/nginx 目录进行映射,用于将 Nginx 的日志文件持久化到主机上
myHtml:
build: ./myHtml
# 构建文件Dockerfile写在当前目录下的myHtml下面
volumes:
- /home/myHtml/api:/var/www/html/myHtml/api
# 添加 volumes 部分来定义卷的映射关系,在运行 docker-compose up -d 启动容器时,Docker 将自动将主机目录中的文件同步到容器的挂载目录中。这意味着可以通过 SVN 更新主机目录中的代码,然后在容器中查看更新后的代码
depends_on:
- nginx
# Add any additional configuration specific to myHtml(你的项目名)
# 这里可以添加多个项目依赖同一个nginx容器
根据上面的配置,那么我需要在当前目录新建nginx目录,nginx目录下面分别还有三个目录:conf.d 、 ssl 、 logs。然后我在nginx/conf.d/下面就可以写我的网站nginx配置文件。
下面是我写的示例:
在nginx/conf.d/新建myHtml.conf
bash
server {
listen 80;
server_name larashop.ishare.cool;
# 注意 这里写的是nginx容器中的目录
root /var/www/html/myHtml/api/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri /index.php =404;
# 注意这里需使用 服务名:端口 的形式
fastcgi_pass php-fpm73:9000;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fixes timeouts
fastcgi_read_timeout 600;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
四、写Dockerfile文件
进入到当前目录下的 myHtml目录,新建Dockerfile:
bash
FROM php:7.3-fpm
# 根据你的情况安装php版本
# 安装 Laravel 所需的依赖
RUN apt-get update && apt-get install -y \
libzip-dev \
zip \
unzip \
&& docker-php-ext-install zip pdo_mysql
# 安装 Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# 设置工作目录,需要对应上面配置nginx映射目录
WORKDIR /var/www/html/myHtml/api
# 复制项目文件到容器
COPY /home/bugu/api /var/www/html/myHtml/api
# 安装项目依赖
RUN composer install --no-interaction
# 设置文件和目录权限
RUN chown -R www-data:www-data \
/var/www/html/myHtml/api/storage \
/var/www/html/myHtml/api/bootstrap/cache \
/var/www/html/myHtml/api/public \
/var/www/html/myHtml/api/vendor/
可以根据自己的情况有说增加,然后在终端中,进入包含 Dockerfile 文件的项目目录,执行下面命令来构建和启动具有修改后工作目录的容器。
bash
docker-compose up -d