一、dockerfile
nginx
#nx 镜像作为基础镜像
FROM nginx
# 将自定义的 Nginx 配置文件复制到容器中
COPY conf/nginx.conf /etc/nginx/nginx.conf
# 将自定义的网站文件复制到容器中
COPY html /usr/share/nginx/html
COPY logs /var/log/nginx
后端一
## 基础镜像java
FROM openjdk:8
## 作者
MAINTAINER xxx
#WORKDIR
#将文件和jar包放进容器
ADD jeecg-system-start-3.5.2.jar /
COPY config /
## 就是在容器中以多少端口号运行
EXPOSE 8080
## 容器启动之后执行的命令,java -jar config.jar 即启动jar
ENTRYPOINT ["java", "-jar", "jeecg-system-start-3.5.2.jar", "--spring.profiles.active=dev"]
后端二
# 基础镜像java
FROM openjdk:8
#MAINTAINER xxx
#将文件和jar包放进容器
ADD ProcurementManagement-0.0.1-SNAPSHOT.jar /
COPY config /
## 就是在容器中以多少端口号运行
EXPOSE 8181
## 容器启动之后执行的命令,java -jar config.jar 即启动jar
ENTRYPOINT ["java", "-jar", "ProcurementManagement-0.0.1-SNAPSHOT.jar"]
mysql
FROM mysql:5.7
# 将 SQL 文件复制到镜像中
#COPY ./procurementmanage.sql /docker-entrypoint-initdb.d/
COPY ./procurementmanage.sql /
# 复制自定义配置文件到容器中
COPY conf /etc/mysql/conf.d
# 复制日志目录到容器中
COPY logs /logs
# 复制数据目录到容器中
COPY data /var/lib/mysql
# 设置环境变量
ENV MYSQL_ROOT_PASSWORD=1234
ENV MYSQL_LOWER_CASE_TABLE_NAMES=1
# 复制入口点脚本到容器中
#COPY entrypoint.sh /usr/local/bin/
#RUN chmod +x /usr/local/bin/entrypoint.sh
# 指定容器启动时执行的命令
#ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["mysqld"]
二、docker-compose
version: "3"
services:
nginx:
image: nginx:latest
container_name: purchase_front
restart: unless-stopped
ports:
- "3100:3100"
networks:
- purchase
volumes:
- /root/usr/local/purchase/docker/purchase_front/conf/nginx.conf:/etc/nginx/nginx.conf
- /root/usr/local/purchase/docker/purchase_front/logs:/var/log/nginx
- /root/usr/local/purchase/docker/purchase_front/html:/usr/share/nginx/html
jeecg_back:
image: jeecg_back:1.0
container_name: jeecg_back
restart: unless-stopped
ports:
- "8080:8080"
networks:
- purchase
volumes:
- /root/usr/local/purchase/docker/jeecg_back/config /
- /root/usr/local/purchase/docker/jeecg_back/jeecg-system-start-3.5.2.jar /
purchase_back:
image: purchase_back:1.0
container_name: purchase_back
ports:
- "8181:8181"
restart: unless-stopped
networks:
- purchase
volumes:
- /root/usr/local/purchase/docker/purchase_back/config /
- /root/usr/local/purchase/docker/purchase_back/ProcurementManagement-0.0.1-SNAPSHOT.jar /
redis:
image: redis:latest
container_name: purchase_redis
ports:
- "6379:6379"
networks:
- purchase
mysql:
image: purchase_mysql:1.0
container_name: purchase_mysql
ports:
- "3306:3306"
volumes:
- /root/usr/local/purchase/docker/mysql/procurementmanage.sql /procurementmanage.sql
- /root/usr/local/purchase/docker/mysql/data /var/lib/mysql
- /root/usr/local/purchase/docker/mysql/logs /logs
- /root/usr/local/purchase/docker/mysql/conf /etc/mysql/conf.d
networks:
- purchase
networks:
purchase:
三、mysql导入sql文件
挂载sql文件:
docker cp ./sql_file.sql mysql-container:/sql_file.sql
进入容器:
docker exec -it <容器id> bash
登录mysql:
mysql -u root -p
输入密码
创建数据库
CREATE DATABASE databasename;
切换database
use databasename;
运行sql文件
source /sql_file.sql;
退出
exit;
ps:这种方式比较麻烦
可以直接将sql放到容器内自动加载,但报错了(后面优化)
四、将镜像下载到本地 然后就是部署
保存镜像到本地
docker save -o /data/docker/nginx_latest.tar nginx:latest
将本地镜像上传
docker load --input nginx_latest.tar
运行docker-compose即可部署成功