1. 服务器部署

1.1 部署Tomcat

1、拉取镜像。

  1. docker pull tomcat:7-jre7

2、创建并运行容器。

  1. # 创建tomcat容器;并挂载了webapps目录
  2. docker run -di --name=tomcat7 -p 9000:8080 --restart=always tomcat:7-jre7 -v /usr/local/webapps:/usr/local/tomcat/webapps

3、查看容器是否运行。
image.png

1.2 部署Nginx

使用 docker-compose

参考:https://www.jianshu.com/p/c90c88fd56ec
1、拉取镜像。

  1. # 拉取镜像
  2. docker pull nginx:1.16.0

2、使用 docker-compose 部署。

  1. version: '3.1'
  2. services:
  3. nginx:
  4. image: nginx # 镜像名称
  5. container_name: docker_nginx # 容器名字
  6. restart: always # 开机自动重启
  7. ports: # 端口号绑定(宿主机:容器内)
  8. - '80:80'
  9. - '443:443'
  10. volumes: # 目录映射(宿主机:容器内)
  11. - ./conf/nginx.conf:/etc/nginx/nginx.conf
  12. - ./conf.d:/etc/nginx/conf.d
  13. - ./html:/usr/share/nginx/html

使用 docker

1、创建 nginx 挂载目录。

  1. mkdir -p /opt/nginx/{conf,html,logs}

2、在 conf 目录下新建 nginx.conf 文件。

  1. user nginx;
  2. worker_processes 1;
  3. error_log /var/log/nginx/error.log warn;
  4. pid /var/run/nginx.pid;
  5. events {
  6. worker_connections 1024;
  7. }
  8. http {
  9. include /etc/nginx/mime.types;
  10. default_type application/octet-stream;
  11. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  12. '$status $body_bytes_sent "$http_referer" '
  13. '"$http_user_agent" "$http_x_forwarded_for"';
  14. access_log /var/log/nginx/access.log main;
  15. sendfile on;
  16. keepalive_timeout 65;
  17. include /etc/nginx/conf.d/*.conf;
  18. server {
  19. listen 80;
  20. server_name localhost;
  21. location / {
  22. root /usr/share/nginx/html;
  23. index index.html index.htm;
  24. }
  25. error_page 500 502 503 504 /50x.html;
  26. location = /50x.html {
  27. root /usr/share/nginx/html;
  28. }
  29. }
  30. }

3、在 html 目录下新建 index.html 文件,随便写点内容。
4、启动容器

  1. docker run -d --name mynginx -p 80:80 --restart=always -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginx/logs:/var/log/nginx -v /opt/nginx/html:/usr/share/nginx/html nginx

5、浏览器访问,查看结果。
image.png

1.3 部署Nacos

参考:

1、拉取镜像,并获取 nacos-docker 文件。

  1. docker pull nacos/nacos-server
  2. git clone https://github.com/nacos-group/nacos-docker.git
  3. cd nacos-docker

2、修改对应 example/standalone-mysql-5.7.yaml 配置文件。

  1. version: "2"
  2. services:
  3. nacos:
  4. image: nacos/nacos-server:latest
  5. container_name: docker_nacos-standalone-mysql
  6. env_file:
  7. - ../env/nacos-standlone-mysql.env
  8. volumes:
  9. - ./standalone-logs/:/home/nacos/logs
  10. - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
  11. ports:
  12. - "8848:8848"
  13. - "9848:9848"
  14. - "9555:9555"
  15. restart: always

单机版部署

version: '3'
services:
  nacos:
    image: nacos/nacos-server:1.4.1
    container_name: nacos
    restart: always
    environment:
      SPRING_DATASOURCE_PLATFORM: mysql
      MODE: standalone
      MYSQL_SERVICE_HOST: 172.16.3.28
      MYSQL_SERVICE_DB_NAME: pie-nacos
      MYSQL_SERVICE_PORT: 3307
      MYSQL_SERVICE_USER: root
      MYSQL_SERVICE_PASSWORD: Pass_123
      NACOS_APPLICATION_PORT: 8848
    volumes:
      - ./nacos/logs/:/home/nacos/logs
      - ./nacos/plugins/:/home/nacos/plugins
      - ./nacos/conf/application.properties:/home/nacos/conf/application.properties
    ports:
      - 8848:8848

2. 数据库部署

2.1 部署MySQL

1、拉取 mysql 镜像。

docker pull mysql:5.7

2、创建容器。

参数说明:

  • run run 是运行一个容器
  • —privileged=true 设值MySQL 的root用户权限, 否则外部不能使用root用户登陆
  • -v /docker/mysql/conf/my.cnf:/etc/my.cnf 将服务器中的my.cnf配置映射到docker中的/docker/mysql/conf/my.cnf配置
  • -v /docker/mysql/data:/var/lib/mysql 同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
  • -e MYSQL_ROOT_PASSWORD=123456 设置MySQL数据库root用户的密码
  • —character-set-server=utf8mb4 —collation-server=utf8mb4_general_ci 设值数据库默认编码
# 创建mysql5.7容器
docker run -d -p 3306:3306 --privileged=true --restart=always -v /docker/mysql/conf/my.cnf:/etc/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name docker_mysql_5.7 mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

# 进入mysql容器里
docker exec -it mysql bash

# docker设置容器自启动
docker update --restart=always 镜像ID

3、远程登录 mysql。
image.png
4、创建数据库和表,这样,docker 里的数据库和表就创建好了。

CREATE DATABASE vue;
USE vue;
CREATE TABLE USER(
  id INT PRIMARY KEY AUTO_INCREMENT,
  age INT,
  username VARCHAR(20),
  password VARCHAR(50),
  email VARCHAR(50),
  sex VARCHAR(20)
)

2.2 部署Redis

1、拉取 redis 镜像。

# 拉取镜像
docker pull redis

2、编写 docker-compose.yaml 文件。

version: '3'
services:
  redis:
    image: redis
    container_name: docker_redis
    restart: always
    volumes:
      - ./datadir:/data
      - ./conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./logs:/logs
    ports:
      - 6379:6379

3、设置 redis.conf 文件,放到 conf 目录下。
redis.conf.txt

2.3 部署Oracle

参考:

1、拉取 oracle 镜像。

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

2、编写 docker-compose.yaml 文件。

version: '3.1'
services:
  master:
    image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
    container_name: docker_oracle_11g
    restart: always
    privileged: true
    ports:
      - 1521:1521

3、启动并进入容器。

docker-compose up -d
docker exec -it docker_oracle_11g bash

4、配置环境,并创建一个用户,实现外部连接。

cd /home/oracle                                           # 进入到 oracle 用户目录
source .bash_profile                                      # 加载 oracle 环境变量
$PATH                                                     # 查看 oracle 环境变量是否生效
sqlplus / as sysdba                                       # 连接 oracle 数据库
alter user system identified by 123;                   # 修改 DBA 账号的密码
alter user sys identified by 123;                      # 修改 DBA 账号的密码
alter profile default limit password_life_time unlimited; # 设置密码为永不过期
create user yxw identified by 123;                    # 创建一个 test 用户,密码 oracle
select * from dba_users t where t.username = 'YXW';      # 查询用户是否创建成功
grant connect, resource, dba to yxw;                     # 给用户授予连接和数据权限

5、配置实例,太复杂,不改了。

# 查看当前实例名称
SQL> select instance from v$thread;

INSTANCE
--------------------------------------------------------------------------------
helowin

6、上面是 docker-compose,下面单独使用 docker 配置。

docker run -d -p 1521:1521 --restart=always --privileged=true -v /home/oracleData/:/home/oracleData/:rw  registry.cn-hangzhou.aliyuncs.com/catarc/adc:my_oracle_11g

docker run -d -p 1521:1521 --restart=always --privileged=true --name docker_oracle_11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

2.4 部署MongoDB

#拉取镜像 
docker pull mongo:latest

#创建和启动容器 
docker run -d --restart=always -p 27017:27017 --name docker_mongo -v /data/db:/data/db -d mongo

#进入容器 
docker exec -it docker_mongo /bin/bash 

#使用MongoDB客户端进行操作 
mongo 

> show dbs #查询所有的数据库 
admin 0.000GB 
config 0.000GB 
local 0.000GB

3. 开源项目项目

这里以 RuoYi-Cloud 项目为例。

3.1 后端项目Maven打包

1、定义 Maven 打包方式:jar 或 war。

<packaging>jar</packaging>

2、点击 IDEA 右侧 Maven 中的 package,则不同模块版本会生成在 ruoyi/ruoyi-xxxx 模块下 target 文件夹。
image.png

3.2 前端NPM打包

1、在 package.json 中使用 build 打包,即可生成 dist 目录。
2、通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。
image.png