docker 实战

  1. docker-compose
    1. springboot
    2. redis
    3. mysql

docker-compose

springboot

docker-compose.yml

version: "3"
  demo-app:
    container_name: demo-app
    restart: always
    image: java:8
    volumes:
      - ./demo-app.jar:/service.jar
      - ./logs:/logback指定目录
      - ./config:/config 指定配置文件springboot会默认加载
      - ./start.sh:/start.sh
    ports:
      - 9260:9260
    entrypoint: sh /start.sh

脚本

nohup java -Dfile.encoding=UTF-8 -Dsun.jun.encoding=UTF-8  -jar service.jar --server.port=9260  >> /logs/service.log 2>&1 &
tail -f /logs/service.log

上面的这个脚本不太合理,不应该再输出一个总的日志文件,后面会越来越大,只需要将项目里面配置的logback目录映射出来即可,使用下面这个脚本输出日志到空设备

nohup java -Dfile.encoding=UTF-8 -Dsun.jun.encoding=UTF-8  -jar service.jar --server.port=9260  > /dev/null 2>&1 &
tail -f /dev/null

利用tail -f /dev/null让容器一直处于runing状态

redis

docker-compose.yml

mysql

docker-compose.yml

nginx

nginx不能直接使用docker-compose启动,https://blog.csdn.net/shallow72/article/details/124452169

docker-compose.yml

version: "3"
services:
  nginx:
    image: nginx:1.21.6
    restart: always
    container_name: nginx
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "80:80"
    volumes:
      - ./conf.d:/etc/nginx/conf.d
      - ./logs:/var/log/nginx
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./html:/usr/share/nginx/html