请提前安装 docker 和 docker-compose
1. 打包springboot项目, 并给redis和mysql起别名 (配置都是用的服务名而不是ip地址)
2. 新建目录, 并上传jar包
mkdir -P /data/zc_travel
3. 创建并编辑 Dockerfile
文件 (要和jar放在同一个目录)
提供下载 Dockerfile
链接: https://pan.baidu.com/s/1t4wdrh9_cxGytdDMWDXpoQ?pwd=s5h3
提取码: s5h3
vim Dockerfile
FROM java:8
EXPOSE 8080
VOLUME /tmp
ENV TZ-Asia /Shanghai
RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo "{TZ}" > /etc/timezone
ADD ruoyi-admin.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
4. 创建并编辑 docker-compose.yml
文件 (要和jar放在同一个目录)
提供下载 docker-compose.yml
链接: https://pan.baidu.com/s/1ysXfc9xuXMHu6fAgVh9f8g?pwd=erah
提取码: erah
vim docker-compose.yml
version: '3'
services:
nginx:
container_name: nginx
image: nginx:1.14.2
environment:
- TZ=Asia/Shanghai
ports:
- "80:80"
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
# - ./data/nginx/:/usr/share/nginx/html/
- ./log/nginx/:/var/log/nginx/
restart: always
redis:
container_name: zcredis
image: redis:4.0.10
environment:
- TZ=Asia/Shanghai
ports:
- "6379:6379"
volumes:
- ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf
- ./data/redis/:/data/
- ./log/redis/:/var/log/redis/
command: redis-server /usr/local/etc/redis/redis.conf --appendonly yes --requirepass PanGuanQing_19910917
restart: always
mysql:
container_name: zcmysql
image: mysql:5.7
environment:
TZ: Asia/Shanghai
MYSQL_DATABASE: zc_travel
MYSQL_ROOT_PASSWORD: PanGuanQing_19910917
MYSQL_ROOT_HOST: '%'
ports:
- "3306:3306"
volumes:
- ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./data/mysql/:/var/lib/mysql/
- ./data/init/:/docker-entrypoint-initdb.d/
- ./log/mysql/:/var/log/mysql/
command: [
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
#这行代码解决无法访问的问题
'--default-authentication-plugin=mysql_native_password'
]
security_opt:
- seccomp:unconfined
restart: always
mazhichu:
container_name: mazhichu
build:
context: .
dockerfile: Dockerfile
environment:
TZ: Asia/Shanghai
spring.datasource.host: mysql
spring.redis.host: redis
ports:
- "8009:8009"
depends_on:
- nginx
- redis
- mysql
restart: always
docker-compose格式解释:
version: ‘3’: 表示使用第三代语法来构建 docker-compose.yaml 文件。
services: 用来表示 compose 需要启动的服务,上面的配置文件中有四个服务分别为:nginx、redis、mysql还有我的项目mazhichu。
Image:指定下载镜像版本
container_name: 指定容器名称
environment: 此节点下的信息会当作环境变量传入容器,例如mysql 服务配置了数据库、密码和权限信息。
ports: 表示对外开放的端口
volumes: 加载本地目录下的配置文件到容器目标地址下
restart: always 表示如果服务启动不成功会一直尝试。
depends_on:配置依赖服务,表示需要先启动 depends_on 下面的服务后,再启动本服务。
links:与depends_on相对应,depends_on控制启动顺序,links控制容器连接问题。值为"服务名:别名"或者直接使用服务名
5. 先启动mysql容器
docker-compose up -d mysql
连接mysql, 导入sql文件
6. 启动全部容器
docker-compose up -d
7. 查看已启动的容器
docker ps -a
8. 查看日志信息
docker logs -f --tail 10 容器ID
9. 访问项目