1. 云服务器相关
购买的是阿里云服务器, 最初使用的是阿里自研系统 Alibaba Cloud Linux 3 , 但是部署docker的时候有问题, 当时官方文档上也没有解决方案, 就将系统更换成了CentOS 8
2. 部署docker
文档之述备矣
centos 8 部署
alibaba cloud linux 3 部署
alibaba cloud linux 2 部署
3. docker命令简介
启动docker : systemctl start docker
停止docker :systemctl stop docker
重启docker :systemctl restart docker
查看docker状态 :systemctl status docker
开机启动 :systemctl enable docker
查看镜像 : docker images
搜索镜像 : docker search ${image_name}
删除镜像 : docker rmi ${image_name}
拉取镜像 : docker pull ${image_name}
推送镜像 : docker push ${image_name}
查询容器 : docker ps (-a …)
创建容器 : docker run (-v -name -p …)
进入容器 : docker exec -it ${container_name} /bin/bash
运行容器 : docker start ${container_name}
停止容器 : docker stop ${container_name}
重启容器 : docker restart ${container_name}
删除容器 : docker rm ${container_name}
拷贝文件 :
docker cp /${master_location} ${container_name}:/{container_location}
可以颠倒,双向拷贝查看容器ip : docker inspect ${container_name}
4. 部署mysql数据库
4.1 拉取数据库镜像
docker pull mysql:5.7
4.2 查看镜像是否拉取成功
dokcer images
4.3 创建mysql容器
docker run -di --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
4.4 开启远程访问
1. 进入mysql容器
docker exec -it mysql /bin/bash
2. 登录
mysql -uroot -p123456
3. 开启远程访问 (设置远程访问密码)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
4. 刷新配置
flush privileges;
4.5 使用navicat进行连接测试
5. 部署后台项目
使用的是maven插件构建镜像
5.1 构建jdk1.8的镜像
整体流程是, 在centos7容器中添加jdk1.8的压缩包, 在其中解压后,配置运行环境 , 部署jdk成功后, 将该容器打包为镜像, 方便日后直接使用
1. 拉取centos7镜像
docker pull centos:7
2. 使用工具上传jdk安装包`jdk-8u171-linux-x64.tar.gz`到云服务器某个目录下
3. 构建一个 Dockerfile 脚本,命名 Dockerfile 内容如下:
FROM centos:7
MAINTAINER qiuming
WORKDIR /usr
RUN mkdir /usr/local/java
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
4. 将脚本文件和jdk的压缩包放在同一目录下,构建镜像
docker build -t="jdk1.8" ./
5. 查看镜像是否构建完成
docker images
5.2 开启Docker远程访问
1. 修改docker配置
vi /lib/systemd/system/docker.service
2. 在ExecStart后添加配置
-H tcp://0.0.0.0:15675 -H unix://var/run/docker.sock
3. 刷新配置,并且重启服务
systemctl daemon-reload
systemctl restart docker
5.3 在项目的maven中增加docker插件
<build>
<finalName>upload</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--docker的maven插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!--镜像名 upload:1.0-->
<imageName>${project.artifactId}:${project.version}</imageName>
<!--基础镜像-->
<baseImage>jdk1.8:latest</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}
</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!--docker远程主机,需要换成云服务器配置的docker远程连接端口-->
<dockerHost>http://12...40:15675</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
5.4 构建项目镜像
mvn clean package -Dmaven.test.skip=true docker:build
5.5 等待构建镜像完成后 查看镜像
docker images
5.6 启动容器命令
- 没有额外配置文件
docker run -id --name=upload -p 8888:8888 upload:1.0-SNAPSHOT
- 存在配置文件
docker run -id --name=upload -v /usr/qiu/upload/cloud:/usr/qiu -p 8888:8888 upload:1.0-SNAPSHOT
6. 部署前端项目
6.1 拉取Nginx镜像
docker pull nginx
6.2 创建配置文件及日志文件夹
nginx是支持热部署的,因此在部署前端项目无需每次都重新创建容器, 因此可以将配置文件, 前端页面 , 日志文件都使用路径映射到宿主机上, 直接修改宿主机的配置, 即可修改nginx容器内部的配置和页面信息, 将日志也可以导出到宿主机上, 方便查看日志
- 创建日志文件夹
mkdir /usr/qiu/nginx/log
- 创建存放前端页面文件夹
mkdir /usr/qiu/nginx/location
- 创建配置文件夹和文件
mkdir /user/qiu/nginx/conf.d
vim /user/qiu/nginx/conf.d/defualt.conf
6.3 创建nginx容器
docker run -d --name nginx -v /usr/qiu/nginx/log:/var/log/nginx -v /usr/qiu/nginx/location:/usr/qiu/nginx -v /usr/qiu/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -p 80:80 nginx
6.4 引入页面,修改配置
直接将打包好的页面拖到/usr/qiu/nginx/location
文件夹中
将配置文件替换到 /usr/qiu/nginx/conf.d/default.conf
文件中
7. 测试
访问首页
登录系统