docker部署服务

数据卷挂载

启动时进行挂载数据卷同步:对共享目录进行拷贝,每个容器都有数据

docker run -it --name 启动的容器名 --volumes-from 父容器名称  镜像名

dockerFile

dockerFile : 构建文件,源代码

  1. 每个保留关键字(指令)必须是大写

  2. 执行顺序从上到下

  3. (#)表示注释

  4. 每一个指令都会创建提交一个新的镜像层

FROM     基础镜像,一切从这里开始构建

MAINTAINER		镜像作者

RUN		镜像构建的时候需要运行的命令

ADD		添加内容

WORKDIR		镜像的工作目录

VOLUME		挂载目录

EXPOST		暴露端口配置

CMD		指定容器启动的时候运行的命令,只有最后一个生效

ENTRYPOINT		指定容器启动的时候运行的命令,可以追加命令

ONBUILD		当构建一个被继承的dockerFile时会运行,出发指令

COPY		类似add,将文件拷贝到镜像中

ENV			构建时设置环境变量

构建镜像

docker build -f dockerFile文件路径 -t 镜像名:版本号   .(当前目录)

如果构建文件命名为 DockerFile -f 可以不用加

样例:

# 基础镜像
FROM openjdk:8

# 系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

# 设置时区
ENV TZ=RPC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ENV PARAMS="-XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m "

ENV SERVER_IP=""

ENV SERVER_PORT=""

ENV  EN=""


# 声明一个挂载点,容器内此路径会对应宿主机的某个文件夹
VOLUME /tmp
# 应用构建成功后的jar文件被复制到镜像内,名字也改成了app.jar
COPY ./app.jar /tmp/app.jar
# 启动容器时的进程
ENTRYPOINT ["sh","-c","java -jar -Dspring.profiles.active=$EN  /tmp/app.jar --eureka.instance.ip-address=$SERVER_IP -server.port=$SERVER_PORT  $PARAMS"]

微服务部署是需要手动指定服务实例ip , 不然feign会调用失败,参考如上,或者docker 网络使用host模式,,与宿主机共享ip ,启动时添加参数 -net=host

运行容器时如果出现如下错误
image

重启doker service docker restart

docker 网络

查看所有的docker 网络

docker network ls

image

docker-compose

安装:

curl -L https://get.daocloud.io/docker/compose/releases/download/2.3.3/docker-compose-`uname -s`-`uname -m` >  /usr/local/bin

安装得版本需要根据docker 版本来决定,使用docker-compose出现命令找不到是版本不对应 , 重新安装docker 对应的docker-compose版本即可

重新安装:

在 /usr/local/bin操作

1. 删除刚下载的:

rm -rf docker-compose 

2. 安装扩展源:

yum -y install epel-release

3. 安装python-pip模块:

yum install python-pip

4. 手动下载 docker-compose 到本地,然后上传到 linux 服务器的 /usr/local/bin 路径下

下载地址:
https://github.com/docker/compose/releases

5. 重命名:

mv docker-compose-linux-x86_64 docker-compose

6. 授权:

 chmod +x ./docker-compose 

7. 查看版本:

docker-compose --version

docker-compose.yml 格式:

version: 指定当前文件所对应的compsoe版本,主要有1、2.x和3.x
service: 服务列表
	<service-name>: 服务名
		image: 指定运行的镜像,可直接拉取已有镜像进行处理
		build: 设置Dockerfile所在的文件夹,可处理需要用Dockerfile构建的镜像
			content: 存放Dockerfile的路径
			dockerfile: 指定构建的Dockerfile文件名
			args: 构建参数,只能在构建过程中访问
		container_name: 设置容器名称
		restart: 重启策略,有no、always、no-failure、unless-stoped
		ports: 暴露容器的端口,格式为宿主机端口:容器端口
			- 8080:8080
		hostname: 设置容器的主机名
		volumns: 设置容器的挂载点,可以挂载到宿主机上,主要格式为宿主机路径:容器路径[:访问模式]
			- /opt/data:/opt/data
			- /var/lib/mysql:/var/lib/mysql:rw
		volumns_from: 挂载另一个服务或容器的所有数据卷
			- service_name
			- container_name
		environment: 设置环境变量
			 - RACK_ENV=development
networks: 配置网络
	app_netwotk:

官网地址:https://docs.docker.com/compose/compose-file/

使用样例:

version: "3"
services:
  payment:
	build: .
	container_name: factor
	ports:
	  - 8084:8084
	environment:
	  SERVER_IP: *************
	  SERVER_PORT: 8084
	  EN: test
posted @ 2022-09-02 14:25  原来是晴天啊  阅读(678)  评论(0编辑  收藏  举报