docker-compose 外部配置部署 java 项目原创

发布时间 2023-10-24 17:38:09作者: GaoYanbing

有的项目写完,需要打包到不同的环境。所以配置一个外部 yml 配置文件会方便很多,不用重新打包。

文件目录构造

├──app├──application.yml
      ├──app.jar 
      ├──Dockerfile
├──mysql
├──nginx
docker-compose.yml
w.sh

Dockerfile

FROM java:8
#VOLUME /tmp
ADD dstapp.jar app.jar
ADD application.yml /application.yml
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Dspring.config.location=/application.yml", "-jar", "/app.jar"]

注意,以上顺序不可改变。-Dspring.config.location 别搞错了,不是 --spring.config.location

docker-compose.yml

version : '2'
services:

  redis:
    image: redis:3
    command: redis-server --requirepass 1234
    ports:
      - "6379"
  nginx:
    build: nginx
    image: jo/nginx
    ports:
      - "9527:9527"
    volumes:
      - ./nginx/dist/:/etc/nginx/html/
    links:
      - dstapp

  mysql:
    build: mysql
    image: jo/mysql
    volumes:
       - ./src/main/docker/mysql/my.cnf:/root/mysql/my.cnf mysql
    command: --max_allowed_packet=32505856
    environment:
       - MYSQL_ROOT_PASSWORD=123456
    ports:
       - "3306"
    expose:
       - "3306"

  dstapp:
    build: dstapp
    image: jo/dstapp
    volumes:
      - ./w.sh:/w.sh
    ports:
      - "8080"
    restart: always
    depends_on:
      - mysql
    links:
      - mysql
      - redis
    entrypoint: "./w.sh mysql:3306 -- java -Dspring.config.location=/application.yml -jar /app.jar"

注意:这里的 -Dspring.config.location 也是需要注意位置。