安装 docker
如果已安装可以跳过这个过程,这里以阿里云centos举例
安装docker的yum库
yum install -y yum-utils
配置docker的yum源 阿里云源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
运行安装docker命令
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动docker
systemctl start docker
国内访问不了docker hub 下拉镜像
可以配置其他源来下载,如果你是阿里云服务,可以在阿里云控制平台找到 “容器镜像服务 ACR” 这里可以放自己的镜像,关键的是这里有个 “镜像工具” 镜像加速器 有个加速地址 (xxxxx.mirror.aliyuncs.com),给docker 配置文件配置这个镜像源。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]//注意例子中的镜像源地址是不正确的
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
部署服务说明
这里通过docker -v 挂载目录文件
我是创建了
setup.py
web/ #主目录
├── nginx/ #Nginx服务相关目录
| ├──conf #Nginx的配置文件目录
| | ├──conf.d #Nginx的网站配置
| | └──nginx.conf #Nginx的主配置文件。
│ └── log #Nginx的日志文件目录。
├── gitea #Gitea(Git服务)相关目录,包含配置和数据
│ ├── conf #配置
│ │ ├── localtime # 配置
│ │ └── timezone #配置
│ └── data #Gitea的数据文件目录
├── mysql #MySQL数据库相关目录
│ ├── conf #MySQL的配置文件目录
│ │ ├── conf.d #MySQL的额外配置文件目录
│ │ └── my.cnf #MySQL的主配置文件
│ └──data #MySQL的数据文件目录。
├── php #PHP相关目录,包含不同版本的配置
│ └── 74 #版本号
│ └── conf #PHP 7.4的配置文件目录
│ ├── php.ini #PHP 7.4的主配置文件。
│ └── www.conf #PHP 7.4的Web服务器配置文件
├── redis #Redis数据库相关目录,包含配置和数据。
│ ├── conf #Redis的配置文件目录。
│ │ └── redis.conf #Redis的主配置文件。
│ └── data #Redis的数据文件目录。
└── www #网站根目录,存放网站代码和静态文件。
Nginx 部署步骤
下载 Nginx 镜像
docker pull nginx:1.20
启动临时容器
docker run --name nginx -d nginx
复制容器配置文件到宿主机
docker cp nginx:/etc/nginx/nginx.conf /web/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /web/nginx/conf
docker cp nginx:/usr/share/nginx/html /web/html
docker cp nginx:/var/log/nginx /web/nginx/log
设置目录权限
chmod 755 -R /web/nginx
chmod 755 -R /web/www
chmod 755 -R /web/html
删除临时容器
docker stop nginx && docker rm nginx
启动正式容器
docker run \
--restart=always \
--name nginx_server \
--privileged=true \
-p 80:80 \
-p 443:443 \
-v /web/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /web/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /web/html:/usr/share/nginx/html \
-v /web/nginx/log:/var/log/nginx \
-v /web/www:/www \
-d nginx:1.20
需要注意的是nginx这里映射的地址是/www,配置网站读取请按容器目录配置
MySQL 部署步骤
下载 MySQL 镜像
docker pull mysql:8.0
创建挂载目录
mkdir -p /web/mysql/{conf,data,log}
启动临时容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
复制配置文件
docker cp mysql:/etc/mysql/conf/my.cnf /web/mysql/my.cnf
设置目录权限
chmod 755 -R /web/mysql
删除临时容器
docker stop mysql && docker rm mysql
启动正式容器
docker run \
-p 3306:3306 \
--restart=always \
--name mysql_server \
--privileged=true \
-v /web/mysql/log:/var/log/mysql \
-v /web/mysql/data:/var/lib/mysql \
-v /web/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=your_password \
-d mysql:8.0
注意your_password是mysql root用户密码请配置你的密码
Redis 部署步骤
下载 Redis 镜像
docker pull redis
创建挂载目录
mkdir -p /web/redis/{conf,data}
创建配置文件
touch /web/redis/conf/redis.conf
启动容器
docker run \
--restart=always \
--log-opt max-size=100m \
--log-opt max-file=6 \
-p 6379:6379 \
--name redis_server \
-v /web/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /web/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes \
--requirepass your_password
注意your_password是mysql root用户密码请配置你的密码
PHP-FPM 部署步骤
下载 PHP-FPM 镜像
docker pull php:7.4-fpm
创建挂载目录
mkdir -p /web/www
mkdir -p /web/php/74/{conf,log}
启动临时容器
docker run --name fpm_php74_server -p 9000:9000 -d php:7.4-fpm
复制配置文件
docker cp fpm_php74_server:/usr/local/etc/php/php.ini-production /web/php/74/conf/php.ini
docker cp fpm_php74_server:/usr/local/etc/php-fpm.d/www.conf /web/php/74/conf/www.conf
启动正式容器
docker run \
-p 9000:9000 \
--name fpm_php74_server \
--link mysql_server:mysql \
--link redis_server:redis \
-v /web/www:/www \
-v /web/php/74/conf/www.conf:/usr/local/etc/php-fpm.d/www.conf \
-v /web/php/74/conf/php.ini:/usr/local/etc/php/php.ini \
-d php:7.4-fpm
这里使用了link 在用mysql redis 直接使用名称不需要填ip适合固定一直运行的服务,没有配置需要使用容器的ip 查看容器ip请看最后的命令
Gitea 部署步骤
下载 Gitea 镜像
docker pull docker.gitea.com/gitea:1.23.8
启动容器
docker run \
-p 3000:3000 \
-p 222:22 \
--restart=always \
--name gitea_server \
-v /web/gitea/data:/data \
-v /web/gitea/conf/timezone:/etc/timezone:ro \
-v /web/gitea/conf/localtime:/etc/localtime:ro \
-e USER_UID=1000 \
-e USER_GID=1000 \
-d docker.gitea.com/gitea
容器内网 IP 查询方法
查询容器内网 IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_id
969

被折叠的 条评论
为什么被折叠?



