首页 > 其他分享 >重温 dockerfile & docker-compose

重温 dockerfile & docker-compose

时间:2023-02-18 20:02:23浏览次数:52  
标签:... compose app jar mysql docker dockerfile

重温dockerfile&dockerCompose

复习dockerfile

将应用程序及其需要的系统函数库、环境、配置、依赖,打包

image-20230218183801291

常用命令

https://docs.docker.com/engine/reference/builder/

指令 说明 示例
FROM 指定镜像base FROM centos:7
ENV 设置环境变量,供后续指令使用 ENV key value
COPY 拷贝物理机文件对镜像指定目录 COPY ./mysql-5.7.rpm /tmp
RUN 执行Linux中的shell命令 RUN yum install gcc
EXPOSE 指定容器运行时监听的端口 EXPOSE 8080
ENTRYPOINT 镜像中的启动命令,在容器运行时调用 ENTRYPOINT java -jar xxx.jar

案例

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

上述的工作等价于

# 指定基础镜像
FROM java:8-alpine

# 拷贝jdk和java项目的包
COPY ./docker-demo.jar /tmp/app.jar

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

dockerCompose

可以基于Compose文件,实现快速部署分布式应用

https://docs.docker.com/compose/compose-file/

案例

不建议docker中部署MySQL,仅作为案例!

version: "3.8"

services:
	mysql:
		image: mysql:5.7.25
		environment:
			MYSQL_ROOT_PASSWORD: root
        volumes:
        	- /tmp/mysql/data:/var/lib/mysql
        	- /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf
	web:
		build: .
		ports:
			- 8090: 8090

安装

最简单的办法:

  • 下载 docker-compose

  • 拖入/usr/local/bin

  • 添加执行权限chomod +x /usr/local/bin/docker-compose

实战

compose

version: "3.2"

services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  userservice:
    build: ./user-service
  orderservice:
    build: ./order-service
  gateway:
    build: ./gateway
    ports:
      - "10010:10010"

files

.
│  docker-compose.yml
│
├─gateway
│      app.jar
│      Dockerfile
│
├─mysql
│  ├─conf
│  │      hmy.cnf
│  │
│  └─data
│      │  ...
│      │
│      ├─cloud_order
│      │      ...
│      │
│      ├─cloud_user
│      │      ...
│      │
│      ├─mysql
│      │      ...
│      │
│      ├─performance_schema
│      │      ...
│      │
│      └─sys
│              ...
│
├─order-service
│      app.jar
│      Dockerfile
│
└─user-service
        app.jar
        Dockerfile

gateway.Dockerfile; order-service.Dockerfile; user-service.Dockerfile

FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar

构建

docker-compose up -d

重启服务

docker-compose restart gateway userservice orderservice

关闭服务(不销毁)

docker-compose stop

# --------------------------------------------
# Stopping cloud-demo_nacos_1        ... done
# Stopping cloud-demo_gateway_1      ... done
# Stopping cloud-demo_orderservice_1 ... done
# Stopping cloud-demo_userservice_1  ... done
# Stopping cloud-demo_mysql_1        ... done

查看日志

docker-compose logs -f

标签:...,compose,app,jar,mysql,docker,dockerfile
From: https://www.cnblogs.com/jentreywang/p/17133436.html

相关文章

  • github action 编译上传docker hub
    简介:以前介绍过dockerhub直接连接github编译docker镜像,但是已经停止服务了,不知道企业会员还有没有。那么以后我们就自己编译docker镜像了么?至少现在github被微软收购以......
  • 虚拟机的openwrt里给Docker扩容的过程
    用网线连接电脑和AP,虚拟机里关闭openwrt。编辑虚拟机设置,增加新硬盘,设置大小。完成后开机openwrt。之后扩容过程参考视频:https://www.bilibili.com/video/BV1cz4y1f7MA......
  • minio+elasticsearch docker-compose
    version:'3.1'services:elasticsearch:image:elasticsearch:7.17.4#volumes:#-/etc/localtime:/etc/localtime#-./es/plugins:/us......
  • docker 安装 nginx
    docker安装nginx参考:https://blog.csdn.net/weixin_43872830/article/details/128972671docker公共仓库地址参考:https://hub.docker.com/......
  • 将 .net core 程序部署到 docker
    发布项目在VS里面选择你需要发布的程序右击添加docke支持,选择要发布的OS目标是Linux。然后会生成一个Dockerfile文件编辑Dockerfile文件注释掉一部分,然后添加......
  • 使用Docker启动并运行Flask应用
    (一)拉取Python镜像dockerpullpython#查看当前主机中存在的镜像dockerimages(二)编写flask应用1.创建一个目录mkdirflask_demo#进入目录中cdflask_de......
  • centos下docker中安装kong
    1、初始化docker环境:yuminstall-yepel-releasecurl-fsSLhttps://get.docker.com/|shsystemctldaemon-reloadsystemctlenabledocker.servicesystemctlrestartdoc......
  • 安装Docker容器
    安装docker1、Docker要求CentOS系统的内核版本高于3.10,查看本页面的前提条件来验证你的CentOS版本是否支持Docker。通过uname-r命令查看你当前的内核版本$unam......
  • 在 Linux 中Docker上安装、启用 SQL Server 代理
     一、使用Docker运行SQLServerLinux容器映像https://learn.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-linux-ver15&piv......
  • composer 执行install 超时解决
    我本地的环境是docker,进入docker执行install后返回超时:#composerinstallNocomposer.lockfilepresent.Updatingdependenciestolatestinsteadofinstallingf......