问题如下:
下载一个mysql或者tomcat的镜像 在docker-compose中的映射卷如下:
volumes:
- "/home/oneaccess/oneaccess/mysql/conf:/etc/mysql"
- "/home/oneaccess/oneaccess/mysql/data:/var/lib/mysql"
- "/home/oneaccess/oneaccess/mysql/logs:/var/log/mysql"
将虚拟机的/home/oneaccess/oneaccess/mysql/data
映射到容器的mysql的数据目录/var/lib/mysql
问题来了: 如果我虚拟机的目录不放任何东西 则mysql容器都启动失败
因为会将本地的数据映射到容器 本地为空 容器的也被映射为空目录
我的处理方法是 启动容器(不映射) 然后进入容器 将对应的目录复制到本机
然后再关掉机器 重新映射数据卷 然后就启动成功了
目前遇到的问题: 使用docker-compose 构建本地的logstash镜像
dockerfile中的书写如下:
ENV MEDIA_MYSQL mysql-connector-java-5.1.46.jar
ENV MEDIA_LOGSTASH logstash-output-jdbc.zip
RUN rpm --rebuilddb && yum install -y expect
WORKDIR /data
COPY ./packages/** ./
RUN mkdir /data/logstash && tar -zxvf logstash-6.8.4.tar.gz --strip-components 1 -C /data/logstash
RUN cp $MEDIA_MYSQL /data/logstash/lib/
RUN cp $MEDIA_LOGSTASH /data/logstash/
WORKDIR /data/logstash
RUN bin/logstash-plugin install file:///data/logstash/$MEDIA_LOGSTASH
RUN ls /data
RUN /usr/bin/expect /data/auto.sh
RUN ls /data/logstash/config
RUN bin/logstash-keystore list
ENTRYPOINT ./bin/logstash -f ./config/logstashbam.conf >logs/logstash.log 2>&1
其中auto.sh
`内容如下
#!/usr/bin/expect -f
set timeout 30
set PASSWORD "Bamboocloud@1234"
set MYSQL_PORT "3306"
set MYSQL_HOST "db"
set DRIVER_JAR_PATH "/data/logstash/lib/mysql-connector-java-5.1.46.jar"
spawn /data/logstash/bin/logstash-keystore create
expect {
"Continue without password protection on the keystore" { send "yes\r"; }
}
expect eof
spawn /data/logstash/bin/logstash-keystore add BIM_PWD
expect "*"
send "$PASSWORD\r"
expect eof
spawn /data/logstash/bin/logstash-keystore add MYSQL_PORT
expect "*"
send "$MYSQL_PORT\r"
expect eof
spawn /data/logstash/bin/logstash-keystore add MYSQL_HOST
expect "*"
send "$MYSQL_HOST\r"
expect eof
spawn /data/logstash/bin/logstash-keystore add DRIVER_JAR_PATH
expect "*"
send "$DRIVER_JAR_PATH\r"
expect eof
构建好容器启动以后,发现配置文件中的变量并没有读取到,分析日志得到原因:
宿主机并没有logstah-keystore这个文件....导致读取不到变量
那么问题来了.....
难不成先不映射config 进入容器把文件捞出来....放在宿主机的conf下 然后再映射...感觉好low
答案在此
https://segmentfault.com/q/1010000043707323