本文最后更新于121 天前,其中的信息可能已经过时。
进入容器目录
docker exec -it dd bash (dd是容器名)
退出容器目录
exit
查看容器内服务日志
docker logs dd (dd是容器名)
进入容器内部 想ping别的容器是否连通,但发现bash: ping: command not found
解决办法如下:(3条命令,等一条执行完再执行下一条
apt-get update
apt install iputils-ping
apt install net-tools
部署一个SpringBoot项目
中间件配置文件不要写固定值
application.yaml
server: port: 8080 spring: profiles: active: dev datasource: url: jdbc:mysql://${mysql.host}:3306/hmall?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver username: root password: ${mysql.password} data: redis: host: ${redis.host} password: ${redis.password}
application-dev.yaml
mysql 是mysql容器的容器名
redis 是 redis容器的容器名 你都可以起不一样的名字
mysql: host: mysql password: 123456 redis: host : redis password: 123456
项目打包成jar包
编写Dockerfile文件
# 基础镜像 FROM openjdk:21-jdk # 设定时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 拷贝jar包 COPY hm-service.jar /app.jar # 入口 ENTRYPOINT ["java", "-jar", "/app.jar"]
编写Dockercompose.yaml文件
version: "3.8" services: mysql: image: mysql container_name: mysql ports: - "3306:3306" environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: 123 volumes: - "./mysql/conf:/etc/mysql/conf.d" - "./mysql/data:/var/lib/mysql" - "./mysql/init:/docker-entrypoint-initdb.d" networks: - qing-net redis: image: redis container_name: redis ports: - "6380:6379" command: redis-server --requirepass 123456 volumes: - "./redis/data:/data" - "./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf" - "./redis/logs:/logs" networks: - qing-net qing: build: context: . dockerfile: Dockerfile container_name: qing ports: - "8090:8080" networks: - qing-net depends_on: - mysql - redis networks: qing-net: name: qing
为此服务专门新建一个文件夹 可以是如此:
- mysql容器挂载数据卷 要把文件夹新建出来,Dockercompose不会新建文件夹,redis也是如此,那些不是文件夹挂载而是文件挂载不必新建
- Dockercompose.yaml 与宿主机mysql文件夹的相对路径要看明白才能写挂载路径,(这里写的就是我这样的同一层目录
- 如果对mysql 、redis 有特别的一些配置可以自己写conf文件到相应的文件夹中,目前我只需要mysql中保存一些程序需要数据文件,即可以在init文件夹中放入sql文件。
切换到jar包路径 cd /root/apps/qingapp
启动docker-compose命令 没问题就是部署成功了
docker compose up -d
如果启动出现错误,或许是哪里没配对(不要慌。我们需要停止该项目已经启动的全部容器 在按照docker给出的错误提示信息检查就行了
还要记得把项目容器的镜像删除掉,要不然下次构建容器时会先构建镜像,然鹅这时镜像已经存在。redis.mysql这些镜像都是官方提供一般不会有错。
docker rmi qingapp-qing