时间紧任务重,就不多说了,直接来讲安装到发布。
1. docker安装
1.若我们是一台新装好的虚拟机,那先将这些工具都装一下,每一个命令执行一下。
yum -y install epel-release
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
yum -y update
yum -y upgrade
yum -y install git
yum -y install gcc
yum -y install gcc-c++
yum -y install make
yum -y install tree
yum -y install tmux
yum -y install initscripts
yum -y install sudo
yum -y install zip
yum -y install vim
yum -y install curl
yum -y install wget
yum -y install net-tools
yum -y install rsync
yum -y install openssh-server
yum -y install openssh-clients
2.安装docker
# Install required packages, they maybe install on default
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# set up the stable repository
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Install the latest version of Docker CE
sudo yum install docker-ce
# start docker
sudo systemctl start docker
#开机启动docker
sudo systemctl enable docker
3.安装docker-compose
方法一:
# curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
查看版本信息
# docker-compose --version
但是此方法会经常因为网络的原因而无法安装
方法二:
1、安装python-pip
yum -y install epel-release
yum -y install python-pip
2、安装docker-compose
pip install docker-compose
待安装完成后,执行查询版本的命令,即可安装docker-compose
docker-compose version
4.镜像加速
由于我们访问的是国外的网,所以,要用镜像加速(以下命令),使得速度快一点。
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://3272dd08.m.daocloud.io
并重启docker sudo systemctl restart docker
5.常用Docker指令及参数
1>.Docker镜像指令
镜像检索
Docker的镜像都放置在Docker官网的Docker Hub上,地址是https://registry.hub.docker.com。可在该网站搜索镜像,也可以用命令“docker search 镜像名”(如:docker search redis)检索。
镜像下载
docker pull 镜像名
查看本地镜像列表
docker images
删除镜像
docker rmi image-id
删除所有镜像
docker rmi $(docker images -q)
2>.Docker容器指令
运行镜像为容器
docker run --name container-name -d image-name
其中--name市委容器取个名称,-d表示detached,意味着执行完这句命令后控制台将不会被阻碍,可继续输入命令操作。如:
docker run --name test-redis -d redis
查看运行中的容器列表
docker ps
通过下列命令可查看运行和停止状态的容器:
docker ps -a
停止容器
通过容器名称或容器ID停止容器
docker stop container-name/container-id
如:
docker stop test-redis
启动容器
通过容器名称或容器ID启动容器
docker start container-name/container-id
如:
docker start test-redis
设置容器开机启动
使用在Docker run的时候使用--restart参数来设置。
no - container:不重启
on-failure - container:退出状态非0时重启
always:始终重启
如:
docker run --restart=always --name first-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql:latest
端口映射
Docker容器中运行的软件所使用的端口,需要映射到当前主机的端口上才能访问。Docker的端口映射通过一个-p参数来实现。例如,我们将Redis容器的6379端口映射到本机的6378端口:
docker run -d -p 6378:6379 --name port-redis redis
删除容器
docker rm container-id
删除所有容器
docker rm $(docker ps -a -q)
查看当前容器日志
docker logs container-name/container-id
如:
docker logs port-redis
登陆容器
运行中的容器其实是一个功能完备的Linux操作系统,所以我们可以像常规的系统一样登录并访问容器。
我们可以使用如下命令,登录访问当前容器,登陆后我们可以在容器中进行常规的Linux系统操作命令,还可以使用exit命令退出登录:
docker exec -it container-id/container-name bash
```
2. 项目的整合
- 将项目结构重新整合
按照如图的方式来将依赖的文件夹放入,docker-compose.yaml,是一个非常重要的文件。
docker-compose.yaml:
version: '3'
services:
nginx:
container_name: v-nginx
image: nginx:1.13
restart: always
ports:
- 80:80
- 443:443
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
mysql:
container_name: v-mysql
image: mysql/mysql-server:5.7
environment:
MYSQL_DATABASE: test
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_HOST: '%'
ports:
- "3306:3306"
restart: always
app:
restart: always
build: ./app
working_dir: /app
volumes:
- ./app:/app
- ~/.m2:/root/.m2
expose:
- "8080"
depends_on:
- nginx
- mysql
command: mvn clean spring-boot:run -Dspring-boot.run.profiles=docker
详解:
1.version: '3': 表示使用第三代语法来构建 docker-compose.yaml 文件。
2.services: 用来表示 compose 需要启动的服务,我们可以看出此文件中有三个服务分别为: nginx、mysql、app。
3.container_name: 容器名称
4.environment: 此节点下的信息会当作环境变量传入容器,此示例中 mysql 服务配置了数据库、密码和权限信息。
5.ports: 表示对外开放的端口
6.restart: always 表示如果服务启动不成功会一直尝试。
7.volumes: 加载本地目录下的配置文件到容器目标地址下
8.depends_on:可以配置依赖服务,表示需要先启动 depends_on 下面的服务后,再启动本服务。
9.command: mvn clean spring-boot:run -Dspring-boot.run.profiles=docker: 表示以这个命令来启动项目;-Dspring-boot.run.profiles=docker表示使用 application-docker.properties文件配置信息进行启动。
Nginx 文件解读
nginx 在目录下有一个文件 app.conf,主要配置了服务转发信息:
server {
listen 80;
charset utf-8;
access_log off;
location / {
proxy_pass http://app:8080;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static {
access_log off;
expires 30d;
alias /app/static;
}
}
app文件夹里面的内容
Dockerfile:
FROM maven:3.5-jdk-8
只有一句,依赖于基础镜像maven3.5和jdk 1.8。因为在docker-compose.yaml文件设置了项目启动命令,这里不需要再添加启动命令。
在项目的resources目录下创建application-dev.properties和application-docker.properties文件
application-dev.properties 中的配置信息和上面一致
application-docker.properties 中的配置信息做稍微的改造,将数据库的连接信息由jdbc:mysql://localhost:3306/test改为jdbc:mysql://mysql:3306/test 。
这样我们所有的配置都已经完成。
3. 部署
1.在linux下创建一个文件夹 docker
$ mkdir docker
- 在然后将我们的整理好格式的项目放入
- 进入项目文件第一层
执行命令:
docker-compose up
这样我们的项目就等待启动了,当看到tomcat端口号,则启动成功。
4.访问我们的项目可以打印出输出语句。