dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
一.不用docker-compose的搭建
1.项目用到了msql和redis 先搭建redis和mysql容器
2.将项目进行打包
3.在linux虚拟机上任意一个目录(我的是/mydata/mydocker)下创建Dockerfile文件
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER zxl
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为partsstock.jar
ADD shkjPartsstock.jar partsstock.jar
# 运行jar包
RUN bash -c 'touch /partsstock.jar'
ENTRYPOINT ["java","-jar","/partsstock.jar"]
#暴露11532端口作为微服务 代码后端的server-port
EXPOSE 11532
4.将打包好的项目和 Dockerfile放在同一路径下
5.构建镜像
docker build -t partsstock:1.4 .
6.运行容器
docker run -d -p 11532:11532 partsstock:1.4
7.接下来就可以正常访问了
二.基于Docker-compose容器编排实现微服务的搭建
1.编写docker-compose.yml文件(docker-compose config -q检查文件正确性)
version: "3"
services:
microService:#(保证全局唯一即可)
image: partsstock:1.4
container_name: ms01 #容器名称
ports:
- "11532:11532"
volumes:
- /app/microService:/data
networks:
- partstock_net
depends_on:
- redis
- mysql
redis:
image: redis:6.0.8
ports:
- "6379:6379"
volumes:
- /app/redis/redis.conf:/etc/redis/redis.conf
- /app/redis/data:/data
networks:
- partstock_net
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: "123456"
MYSQL_USER: 'root'
MYSQL_PASS: '123456''
ports:
- "3306:3306"
volumes:
- /app/mysql/db:/var/lib/mysql
- /app/mysql/conf/my.cnf:/etc/my.cnf
- /app/mysql/init:/docker-entrypoint-initdb.d
networks:
- partstock_net
command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks:
partstock_net:
2.编写Dockerfile
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER zxl
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为partsstock.jar
ADD shkjPartsstock.jar partsstock.jar
# 运行jar包
RUN bash -c 'touch /partsstock.jar'
ENTRYPOINT ["java","-jar","/partsstock.jar"]
#暴露11532端口作为微服务 代码后端的server-port
EXPOSE 11532
在当前目录下执行
docker-compose up -d
文件目录如下