1. 服务器部署
1.1 部署Tomcat
1、拉取镜像。
docker pull tomcat:7-jre7
2、创建并运行容器。
# 创建tomcat容器;并挂载了webapps目录
docker run -di --name=tomcat7 -p 9000:8080 --restart=always tomcat:7-jre7 -v /usr/local/webapps:/usr/local/tomcat/webapps
1.2 部署Nginx
使用 docker-compose
参考:https://www.jianshu.com/p/c90c88fd56ec
1、拉取镜像。
# 拉取镜像
docker pull nginx:1.16.0
2、使用 docker-compose 部署。
version: '3.1'
services:
nginx:
image: nginx # 镜像名称
container_name: docker_nginx # 容器名字
restart: always # 开机自动重启
ports: # 端口号绑定(宿主机:容器内)
- '80:80'
- '443:443'
volumes: # 目录映射(宿主机:容器内)
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./conf.d:/etc/nginx/conf.d
- ./html:/usr/share/nginx/html
使用 docker
1、创建 nginx 挂载目录。
mkdir -p /opt/nginx/{conf,html,logs}
2、在 conf 目录下新建 nginx.conf 文件。
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
3、在 html 目录下新建 index.html 文件,随便写点内容。
4、启动容器
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、浏览器访问,查看结果。
1.3 部署Nacos
参考:
- https://blog.csdn.net/m0_37923316/article/details/112569369?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6.pc_relevant_default
- https://www.it610.com/article/1288253969126174720.html
- https://github.com/nacos-group/nacos-docker/blob/master/README_ZH.md
1、拉取镜像,并获取 nacos-docker 文件。
docker pull nacos/nacos-server
git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker
2、修改对应 example/standalone-mysql-5.7.yaml 配置文件。
version: "2"
services:
nacos:
image: nacos/nacos-server:latest
container_name: docker_nacos-standalone-mysql
env_file:
- ../env/nacos-standlone-mysql.env
volumes:
- ./standalone-logs/:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8848:8848"
- "9848:9848"
- "9555:9555"
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。
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
参考:
- https://blog.csdn.net/Liveor_Die/article/details/105177966?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.1&utm_relevant_index=3
- https://blog.csdn.net/l1028386804/article/details/106558229?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-4.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.3&utm_relevant_index=7
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 文件夹。
3.2 前端NPM打包
1、在 package.json 中使用 build 打包,即可生成 dist 目录。
2、通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。