需求:
将mysql, Redis 以及 Tomcat 合并到一个独立的docker image中,run container 之后三个服务自启动。
目录结构:
alice@alice:~/image$ tree
.
├── build.sh
├── container.sh
├── Dockerfile
├── README.md
├── redis-client.service
├── redis_cluster
│ ├── master_6379
│ │ └── redis.conf
│ ├── slave_6479
│ │ └── redis.conf
│ └── slave_6579
│ └── redis.conf
├── redis-master.service
├── redis-slave.service
├── run-container.sh
└── tomcat.service
4 directories, 12 files
关于以上文件和脚本的说明:
alice@alice:~/image$ cat README.md
1.关于 Dockerfile:
基础镜像来自docker官方:https://hub.docker.com/r/centos/systemd/
2.关于各文件:
build.sh ----- build Dockerfil 的shell脚本
container.sh ----- docker run container 的shell脚本
run-container.sh ----- shell脚本,传递参数给 container.sh 启动容器
redis_cluster/ ----- redis一主两从的配置文件的目录
*.service ----- systemctl脚本,实现开机自启动
build.sh
Dockerfile:
```shell
FROM centos/systemd
MAINTAINER alice
RUN yum clean all && yum repolist
RUN yum install epel-release -y
RUN yum install wget -y
RUN yum install redis -y
RUN cd /tmp
RUN wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
RUN tar xf apache-tomcat-8.5.34.tar.gz && mv apache-tomcat-8.5.34 /usr/local/tomcat
RUN yum install java-1.7.0-openjdk -y
RUN cd /tmp
RUN wget https://repo.mysql.com//mysql-community-release-el7-5.noarch.rpm
RUN rpm -ivh mysql-community-release-el7-5.noarch.rpm
RUN yum clean all && yum repolist
RUN yum install mysql-community-server -y
COPY redis_cluster/ /usr/local/redis_cluster/
COPY redis-master.service /lib/systemd/system/redis-master.service
COPY redis-slave.service /lib/systemd/system/redis-slave.service
COPY redis-client.service /lib/systemd/system/redis-client.service
COPY tomcat.service /lib/systemd/system/tomcat.service
RUN systemctl enable tomcat
RUN systemctl enable mysqld
RUN systemctl enable redis-master
RUN systemctl enable redis-slave
RUN systemctl enable redis-client
EXPOSE 6379 6479 6579 3306 8080
CMD ["/usr/sbin/init"]