1:要启动容器必须都先创建好镜像文件
C:\Users\dell>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
poi 1.0 22738bb31074 4 hours ago 105MB
redis latest 506734eb5e71 6 days ago 138MB
nginx latest eea7b3dcba7e 7 days ago 187MB
mysql 8.0 5761fe35fa53 13 days ago 577MB
openjdk 8-alpine a3562aa0b991 4 years ago 105MB
C:\Users\dell>
2:docker -compse启动容器
version: '2'
services:
compose-redis:
image: redis
ports:
- "6379:6379"
restart: always
container_name: compose-redis
# command: redis-server --appendonly yes
volumes:
- ./redis.conf:/etc/redis/redis.conf
compose-mysql:
image: mysql:8.0
container_name: compose-mysql
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: root
ports:
- "3306:3306"
volumes:
- ./sql:/docker-entrypoint-initdb.d #./代表和docker-compose.yml同目录下
- ./mysql/conf:/etc/mysql/mysql.conf.d
- ./mysql/log:/var/log/mysql
- ./mysql/data:/var/lib/mysql
compose-nginx:
image: nginx
container_name: compose-nginx
restart: always
depends_on: #以后compose-poi启动后再启动该容器
- compose-poi
ports:
- "88:88"
links:
- compose-poi
volumes:
- ./dist:/home/hdxWeb #映射前端dist下的全部文件到nginx容器/home/hdxWeb目录下
- ./nginx/nginx.conf:/etc/nginx/nginx.conf #映射配置nginx.conf文件设置,配置请求跳转到/home/hdxWeb目录下等
- ./work/logs/nginx:/etc/nginx/logs
compose-poi:
restart: on-failure
container_name: compose-poi
image: poi:1.0
depends_on: #depends_on 关键字用于定义服务之间的依赖关系。它指定了在启动服务之前需要启动的其他服务
- compose-redis
- compose-mysql
links: #links 关键字用于链接服务之间的网络连接,允许一个服务能够访问另一个服务
- compose-redis
- compose-mysql
ports:
- "8088:8088"
volumes: #应该使用瘦身部署jar方便更新
- ./target/poi.jar ./app/
- ./target/resources/ ./app/resources/
- ./target/lib/ ./app/lib/
注意使用挂载命令volumes的时候,类似文件挂载可以这样写
./target/poi.jar ./app/
表示宿主机docker-compose.yml当前目录下的/target/poi.jar文件挂载到容器默认目录app下(如果是通过命令docker run -d -p 8088:8088 -v ./target/poi.jar:./app/,这样启动容器有两个报错,第一个是这样必须写绝对路径,不能写相对路径,第二是文件指定必须挂载到指定文件,应该改成:命令docker run -d -p 8088:8088 -v G:/target/poi.jar:/test/app/ poi.tar)
3:dockerfiled生成的镜像文件可以使用copy命令或者add命令添加相应资源到启动容器内,但是生成镜像的时候没有mounts绑定挂载宿主机资源的方法
记住规则:文件挂载文件,文件夹挂载文件夹就可以了
版权归原作者 小徐敲java 所有, 如有侵权,请联系我们删除。