编写nginx服务的dockerfile文档,满足如下要求:
1)基础镜像:centos:7
2)作者信息:(你自己名字的首字母缩写)
3)下载:gcc-c++ zlib-devel pcre-devel make
4)将nginx-1.16.1.tar.gz解压并赋值到容器中的/tmp中
5)进入到容器中的/tmp/nginx-1.16.1文件夹中,并进行配置、编译;
提示:./configure --prefix=/usr/local/nginx
make -j 2 && make install
6)将本地nginx.conf替换容器中的/usr/local/nginx/conf/nginx.conf文件
7)端口80
8)容器启动后执行命令/usr/local/nginx/sbin/nginx -g daemon off;
编写php服务的dockerfile文档,满足如下要求:
1)基础镜像:centos:7
2)作者信息:姓名首字母
3)下载gcc gcc-c++ gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel make perl
4)将本地文件libzip-1.2.0.tar.gz解压并复制到容器中的/tmp中
5)通过以下命令对libzip进行配置编译:
cd /tmp/libzip-1.2.0 && ./configure && make && make install
6)在容器中复制并解压文件php-7.3.9.tar.gz到/tmp文件夹中,然后进入到/tmp/php-7.3.9文件夹下,并通过以下命令进行编译:
```bash
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql --with-mysqli \
--with-openssl --with-zlib --with-curl --with-gd \
--with-jpeg-dir --with-png-dir --with-iconv \
--enable-fpm --enable-zip --enable-mbstring
```bash
6)在容器中将/usr/local/lib/libzip/include/zipconf.h文件复制到 /usr/local/include/文件加下
7)继续进行编译make -j 4 && make install
8)在容器中将/usr/local/php/etc/php-fpm.conf.default文件复制为 /usr/local/php/etc/php-fpm.conf文件
9)在容器中将文件/usr/local/php/etc/php-fpm.d/www.conf.default 复制成/usr/local/php/etc/php-fpm.d/www.conf 文件
10)在容器中修改/usr/local/php/etc/php-fpm.d/www.conf文件中的127.0.0.1为0.0.0.0
11)在容器中复制./sapi/fpm/init.d.php-fpm文件成 /etc/init.d/php-fpm文件
12)在容器中修改/etc/init.d/php-fpm权限为可执行
13)端口9000
14)在容器启动时执行命令:/etc/init.d/php-fpm start && tail -F /var/log/messages
根据下面需求,完成lnmp的docker-compose.yml文档的编写
1)服务名:nginx
该服务的主机名: nginx
镜像:由本地文件Dockerfile构建
端口:8080
链接网络:lnmp
卷:./wwwroot:/usr/local/nginx/html
2)服务php
主机名:php
镜像:由本地文件Dockerfile构建
链接网络:lnmp
卷:./wwwroot:/usr/local/nginx/html
3)服务mysql
主机名:mysql
镜像:mysql:5.7
端口:3307:3306
链接网络:lnmp
卷:./mysql/conf:/etc/mysql/conf.d
./mysql/data:/var/lib/mysql
环境变量:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: user123
4)网络:
lnmp
访问lnmp端口,表示成功
搭建Harbar
1)准备:两台机子,一个作为客户端,一个为服务端。均已安装好:docker,docker-compose,Python
2)下载Harbar
https://github.com/vmware/harbor/releases/download/v1.2.2/harbor-online-installer-v1.2.2.tgz
3)修改配置文件
ip地址为服务器地址
4)启动
6)验证是否成功:容器是否已经启动,是否可以登录网页界面
1.服务器端镜像上传
1)登录账户
(user:admin
passwd:Harbor12345)
2)创建一个项目myproject-kgc
3)服务器端登录Harbor
docker login -u admin -p Harbor12345 http://127.0.0.1
4)将镜像Nginx上传至Harbor仓库
docker tag nginx 127.0.0.1/myproject-kgc/nginx:v1
docker pushu 127.0.0.1/myproject-kgc/nginx:v1
5)查看Harbor界面
1)修改docker.service配置文件
2)将tomcat上传至Harbar仓库
命令大全
https://www.runoob.com/docker/docker-command-manual.html
1、查看nginx状态netstat -lnp
看到它占用了80端口
2、使用kill结束nginx(方便测试docker上的nginx)
3、使用命令docker pull nginx
下载nginx
4、使用命令docker pull php
下载php
5、开启docker中的nginxdocker run --rm -d -p 80:80 --name nginx nginx
涉及的参数有
--rm:表示这个容器执行完后会被直接销毁。
--name:指定这个容器的名称。
-d:表示这个容器会在后台运行。
-p:表示开放容器的80端口到主机的80端口。
-v:表示将nginx的配置文件挂载到容器的对应目录下。
终端示例
[root@VM_0_6_centos ~]# docker run --rm -d -p 80:80 --name nginx nginx
ba3a9c38a22d35aecc3a10ac6b6d04e9675d067dc606ef43aa2ecb31ed8a5623
[root@VM_0_6_centos ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba3a9c38a22d nginx "nginx -g 'daemon of…" 14 seconds ago Up 13 seconds 0.0.0.0:80->80/tcp nginx
06af4d57d5ab 9f38484d220f "/bin/bash" 20 minutes ago Exited (127) 19 minutes ago dreamy_germain
[root@VM_0_6_centos ~]#
6、使用docker rm <names>
关闭docker容器docker stop <names>
7、查看容器docker container ls
docker ps -a
所有容器(包括未运行)
参考 https://www.runoob.com/docker/docker-ps-command.html
8、使用-v设置nginx的挂载目录docker run --rm -d -p 80:80 -v ~/nginx/www/:/usr/share/nginx/html --name nginx nginx
也可以挂载各种配置文件。有点乱,找不到docker默认的配置文件和挂载目录在哪里。
LNMP部署步骤如下:
1.安装Docker和Docker-Compose
Docker和Docker-Compose是部署容器化应用的必备工具。这里不再过多赘述,具体安装可以参考官方文档。
2.创建Dockerfile
在应用根目录下创建一个名为Dockerfile的文件,用于定义部署镜像。具体内容如下:
# 指定基础镜像
FROM centos:7
MAINTAINER Your Name
# 安装常见工具
RUN yum update -y && yum clean all
RUN yum install -y wget curl vim epel-release
# 安装Nginx
RUN yum install -y nginx
# 安装PHP及相关扩展
RUN yum install -y php php-fpm php-common php-mysql php-cli php-mbstring php-gd
# 安装MySQL客户端及其它依赖
RUN yum install -y mariadb
# 启动Nginx、PHP、MySQL服务
CMD ["/usr/sbin/init"]
3.创建Docker-Compose文件
在应用根目录下创建一个名为docker-compose.yml的文件,用于定义一组相关联的容器。具体内容如下:
version: '3.8'
services:
nginx:
build: .
ports:
- "80:80"
volumes:
- ./web:/var/www/html
- ./nginx:/etc/nginx/conf.d
depends_on:
- php
restart: always
php:
build: .
volumes:
- ./web:/var/www/html
depends_on:
- db
restart: always
db:
image: mariadb
environment:
- MYSQL_ROOT_PASSWORD=my-secret-pw
- MYSQL_DATABASE=my_database
- MYSQL_USER=my_user
- MYSQL_PASSWORD=my_password
volumes:
- ./mysql:/var/lib/mysql
restart: always
其中,nginx、php和db分别对应了三个容器。nginx的端口映射为本机80端口,映射了本机的web和nginx目录到nginx容器中对应目录。php容器映射了本机的web目录到容器中的/var/www/html目录。db容器使用了mariadb镜像,并开放了3306端口,设定了MySQL的root密码、数据库名、用户名和密码,并将MySQL数据挂载到了本机的mysql目录。
4.运行容器
在应用根目录执行以下命令即可启动容器:
docker-compose up -d
其中,-d参数表示后台启动。
5.访问应用
通过浏览器访问http://localhost 即可查看应用是否部署成功。
注意事项:
1.在搭建过程中要注意网络安全,及时更新各组件的版本。
2.容器中的应用进行调试需要用到Xdebug等调试工具,建议在容器中进行安装。
3.启动容器时会遇到许多问题,如果您的资深IT专家水平不够,建议在网上寻找相关的资料了解,并逐一解决问题。