1、docker-entrypoint.sh
#!/bin/bash
set -e
if [[ $redis_url ]]; then
sed -i 's#redis://127.0.0.1:6379#redis://'${redis_url}'#' /data/smartgate/etc/settings.json
fi
if [[ $redis_password ]]; then
sed -i 's#password=password#password='${redis_password}'#' /data/smartgate/etc/settings.json
fi
if [[ $smartgate_role ]]; then
sed -i 's#"AppName": "APIGate"#"AppName": "'${smartgate_role}'"#' /data/smartgate/etc/settings.json
fi
exec "$@"
2、Dockerfile
FROM centos:7.9.2009
RUN mkdir /data/
ADD smartgate.tar.gz /data/
COPY docker-entrypoint.sh /bin/ #把docker-entrypoint.sh放到/bin/目录下
RUN chmod +x /bin/docker-entrypoint.sh
COPY start.sh /data/smartgate/op/start.sh
WORKDIR /data/smartgate/op
ENTRYPOINT ["docker-entrypoint.sh"] #启动前预处理
CMD ["./start.sh"]
EXPOSE 80 8080 443
3、启动时增加环境变量
version: "3"
services:
smartgate-apigate:
container_name: "apigate"
hostname: "apigate"
image: "smartgate"
restart: always
environment: #以下三个环境变量,docker-entrypoint.sh会读取
redis_url: "192.168.11.210:6379"
redis_password: "redispassword"
smartgate_role: "APIGate"
volumes:
- /data/log/smartgate:/data/log/smartgate
ports:
- '80:80'
- '8080:8080'
- '443:443'