docker安装以及docker compose发布项目

时间紧任务重,就不多说了,直接来讲安装到发布。

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. 项目的整合

  1. 将项目结构重新整合

 

按照如图的方式来将依赖的文件夹放入,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

  1. 在然后将我们的整理好格式的项目放入
  2. 进入项目文件第一层

   执行命令:

   docker-compose up

这样我们的项目就等待启动了,当看到tomcat端口号,则启动成功。

4.访问我们的项目可以打印出输出语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值