Docker容器

如何使用 Docker 部署项目

本文主要是介绍如何使用 Docker 部署项目,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

使用 docker 部署一个基于 Nginx、Redis、MySQL、SpringBoot 的前后端分离项目

安装 docker

安装依赖

$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
复制代码

添加 yum 国内软件源

$ sudo yum-config-manager \
--add-repo \
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
复制代码

更新yum软件源缓存, 安装 docker-ce

$ sudo yum makecache fast
$ sudo yum install docker-ce
复制代码

启动 docker-ce

$ sudo systemctl enable docker
$ sudo systemctl start docker
复制代码

当前用户加入 docker 用户组, 加入后退出终端重新登录

$ sudo groupadd docker
$ sudo usermod -aG docker sabercon
复制代码

配置镜像加速

/etc/docker/daemon.json 中写入腾讯云镜像

{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://dockerhub.azk8s.cn",
    "https://hub-mirror.c.163.com"
  ]
}
复制代码

重启服务

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
复制代码

安装 mysql

$ docker pull mysql
$ docker run -p 3306:3306 --name mysql \
-v /etc/localtime:/etc/localtime \
-v ~/mysql/data:/var/lib/mysql \
-v ~/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=sabercon20  \
-d mysql
复制代码

进入容器操作 mysql

$ docker exec -it mysql /bin/bash
$ mysql -uroot -psabercon20 --default-character-set=utf8
复制代码

创建用户并修改时区

CREATE USER 'sabercon'@'%' IDENTIFIED WITH mysql_native_password BY 'sabercon20';
GRANT ALL PRIVILEGES ON *.* TO 'sabercon'@'%';
SET GLOBAL time_zone = '+8:00';
SET time_zone = '+8:00';
FLUSH PRIVILEGES;
复制代码

安装 redis

不开启持久存储

$ docker pull redis
$ docker run --name redis \
-v /etc/localtime:/etc/localtime \
-d redis
复制代码

进入容器操作 redis

$ docker exec -it redis redis-cli
复制代码

安装 nginx

先启动拷贝配置文件

$ docker pull nginx
$ docker run --name nginx -d nginx
$ docker container cp nginx:/etc/nginx ~/nginx/
$ mv nginx conf
$ docker stop nginx
$ docker rm nginx
复制代码

启动 nginx

$ docker run -p 80:80 --name nginx \
-v /etc/localtime:/etc/localtime \
-v ~/nginx/html:/usr/share/nginx/html \
-v ~/nginx/logs:/var/log/nginx  \
-v ~/nginx/conf:/etc/nginx \
-d nginx
复制代码

~/nginx/conf/conf.d 中加入 api.conf

server {
    listen       80;
    server_name  www.sabercon.cn;

    location / {
        root      /usr/share/nginx/html;
        index     index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    location /api {
        proxy_pass   http://172.16.0.17:8080/api;
    }
}
复制代码

部署前端

安装文件传输工具上传 dist.tar.gz 到 ~/nginx/

$ sudo yum -y install lrzsz
$ rz
复制代码

解压覆盖 ~/nginx/html

$ tar -zxvf dist.tar.gz
$ sudo rm -rf html
$ mv dist html
$ docker restart nginx
复制代码

部署后端

创建 Dockerfile 文件

# 该镜像需要依赖的基础镜像
FROM java:8
# 将当前目录下的 jar 包复制到 docker 容器的 / 目录下
ADD motto-log-0.0.1-SNAPSHOT.jar /motto-log.jar
# 运行过程中创建一个 motto-log.jar 文件
RUN bash -c 'touch /motto-log.jar'
# 声明服务运行在 8080 端口
EXPOSE 8080
# 指定 docker 容器启动时运行jar包
ENTRYPOINT ["java", "-jar","/motto-log.jar"]
# 指定维护者的名字
MAINTAINER sabercon
复制代码

maven package 后将 Dockerfile 和 jar 包一起上传服务器

# . 表示 Dockerfile 所在目录
$ docker build -t motto-log:0.0.1-SNAPSHOT .
$ docker run -p 8080:8080 --name motto \
--link redis:redis \
--link mysql:mysql \
-v /etc/localtime:/etc/localtime \
-v ~/motto/logs:/var/logs \
-d motto-log:0.0.1-SNAPSHOT
复制代码
这篇关于如何使用 Docker 部署项目的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!