docker中dockerfile、 docker-compose相关概念记录
1. dockerfile和docker-compose区别
使用 Dockerfile 定义应用程序的环境,
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
2. dockrefile
FROM java:8
VOLUME /tmp
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
RUN bash -c 'touch /app.jar'
ARG EXPOSE_PORT
EXPOSE ${EXPOSE_PORT}
RUN mkdir /arcsoft
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
3.make-image.sh 创建镜像
#!/bin/bash
docker rmi lll/demo
docker build -t lll/demo --build-arg JAR_FILE=lll-server-0.0.1-SNAPSHOT.jar --build-arg EXPOSE_PORT=8077 .
4.docker-compose常用属性介绍
docker-compose.yml 例子:
version: '3'
services:
pro-service:
image: lll/demo
restart: always
depends_on:
- eureka
- zuul
- mysqldb
- redisdb
links:
- eureka
- mysqldb
- mongodb
- mqttbroker
ports:
- "20000:20000"
volumes:
- "/var/lll/nginx/assets:/var/www/assets"
env_file:
- env_file.env
eureka:
image: lll/eureka-server
restart: always
ports:
- "8077:8077"
zuul:
image: lll/zuul-server
restart: always
depends_on:
- redisdb
- mysqldb
links:
- redisdb
- mysqldb
ports:
- "10001:10001"
env_file:
- env_file.env
redisdb:
image: redis:3.2
restart: always
ports:
- "6379:6379"
mysqldb:
image: mysql:5.7.26
restart: always
volumes:
- "/var/lll/mysql/:/var/lib/mysql"
- "${PWD}/sql:/source"
ports:
- "3306:3306"
environment:
- "MYSQL_ROOT_PASSWORD=lll"
- "TZ=Asia/Shanghai"
1) version
version的版本并不是你工程的版本号,而是跟你安装的docker engine有关
官网地址:https://docs.docker.com/compose/compose-file/compose-versioning/
2)image
version: '3'
services:
pro-service:
image: lll/demo
image后面跟的是镜像的标签名,不是路径
3)restart
no:是默认的重启策略,在任何情况下都不会重启容器。
always:容器总是重新启动。
on-failure:在容器非正常退出时(退出状态非0),才会重启容器。
unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
4)depend_on
depends_on
设置依赖关系。
version: '3'
services:
pro-service:
image: lll/demo
restart: always
depends_on:
- eureka
- zuul
- mysqldb
- redisdb
docker-compose up :以依赖性顺序启动服务。在以下示例中,先启动eureka 和zuul、mysqldb、redisdb ,才会启动pro-service。
docker-compose up SERVICE :自动包含 SERVICE 的依赖项。在以下示例中,docker-compose up pro-service 还将创建并启动 eureka 和zuul、mysqldb、redisdb。
docker-compose stop :按依赖关系顺序停止服务。在以下示例中, pro-service 在 eureka 和zuul、mysqldb、redisdb 之前停止。
5) links
links解决的是容器连接问题,启动pro-service时,links相关的容器也会自动连接。
links:
- eureka
- mysqldb
- mongodb
- mqttbroker
6)ports
映射端口的标签。指定容器的端口,宿主机会随机映射端口。
ports:
- "20000:20000"
7) volumes
将主机的数据卷或着文件挂载到容器里。
volumes:
- "/var/lll/nginx/assets:/var/www/assets"
8) env_file.env
从文件添加环境变量。可以是单个值或列表的多个值。
例子:
mysql-database-lll=lll
mysql-username=root
mysql-passwd=lll2019
oem-sqlserver-host=192.168.1.213
oem-sqlserver-port=1433
oem-sqlserver-database-lll=oem
oem-sqlserver-username=sa
oem-sqlserver-passwd=123456
user-photo-save-path=/var/www/assets/static-resources/photos
eureka-host=eureka
mysql-host=mysqldb
redis-host=redisdb
ArcSoft_AppId=6APtseEh7dgCpPf8xjuNPZqUEShDcsKa8GZSHZy34rMd
ArcSoft_SdkKey=DJS9FVuHTyUqC5gVXB75d9eB4J4ij93BFLAUL8CQX6nZ
ArcSoft_ActiveKey=82Y1-1176-J12E-FE2D
ArcSoft_LibPath=/arcsoft/LINUX64
ArcSoft_ActiveOfflineFile=/arcsoft/82Y11176J12EFE2D.dat
bjtds.user.default-password=123456
zb-uri=http://127.0.0.1:8099
TZ=Asia/Shanghai
LANG=C.UTF-8