Docker Update

Add dockerfiles for each piece of infrastructure.  Support no
password for mysql.  Also added the local logs shared folder
with support for local venv code but further testing is needed.

Change-Id: I983299a389a7e3230625114c2629ed86d765daa0
This commit is contained in:
Brian Stajkowski 2016-07-11 12:44:00 -07:00
parent 7cd6a4b56a
commit 076cd9cbfe
12 changed files with 177 additions and 17 deletions

5
.gitignore vendored
View File

@ -50,5 +50,6 @@ ChangeLog
# Docs # Docs
docs/build docs/build
# Vagrant # Docker
.vagrant/ quark_container_venv
quark_container_logs

View File

@ -9,7 +9,7 @@ use_syslog: "True"
syslog_log_facility: "LOG_LOCAL0" syslog_log_facility: "LOG_LOCAL0"
[DATABASE] [DATABASE]
connection = mysql://root:password@docker-mysql/neutron?charset=utf8 connection = mysql://root:@docker-mysql/neutron?charset=utf8
reconnect_interval = 5 reconnect_interval = 5
auto_create_schema = False auto_create_schema = False
min_pool_size = 100 min_pool_size = 100

View File

@ -48,3 +48,6 @@ docker rm quark
echo "Neutron/Quark: Complete" echo "Neutron/Quark: Complete"
echo "-----------------------" echo "-----------------------"
echo " " echo " "
rm -rf ./quark_container_logs
rm -rf ./quark_container_venv

View File

@ -7,8 +7,12 @@ echo "Neutron/Quark: Complete"
echo "-----------------------" echo "-----------------------"
echo " " echo " "
rm -rf ./quark_container_logs/*
rm -rf ./quark_container_venv/*
echo "Neutron/Quark: Starting Container..." echo "Neutron/Quark: Starting Container..."
docker run -d -v $(pwd):/opt/quark -v ~/neutron:/opt/configs -p 9696:9696 --link mysql:docker-mysql --link kibana:docker-kibana --link rabbitmq:docker-rabbitmq --link redis-sentinel:docker-redis-sentinel --name quark stajkowski/quark docker run -d -v $(pwd):/opt/quark -v ~/neutron:/opt/configs -v $(pwd)/quark_container_logs:/var/log/neutron -v $(pwd)/quark_container_venv:/opt/venv/lib/python2.7/site-packages/quark -p 9696:9696 --link mysql:docker-mysql --link kibana:docker-kibana --link rabbitmq:docker-rabbitmq --link redis-sentinel:docker-redis-sentinel --name quark stajkowski/quark
# docker run --entrypoint /bin/bash -v $(pwd):/opt/quark -v ~/neutron:/opt/configs -v $(pwd)/quark_container_logs:/var/log/neutron -v $(pwd)/quark_container_venv:/opt/venv -p 9696:9696 --link mysql:docker-mysql --link kibana:docker-kibana --link rabbitmq:docker-rabbitmq --link redis-sentinel:docker-redis-sentinel --name quark stajkowski/quark
echo "Neutron/Quark: Waiting for Neutron to Start..." echo "Neutron/Quark: Waiting for Neutron to Start..."
# Need to wait for DB to standup # Need to wait for DB to standup
sleep 5 sleep 5

View File

@ -2,22 +2,20 @@
# To build a new container # To build a new container
# docker build -t quark . # docker build -t quark .
mkdir ./quark_container_logs
mkdir ./quark_container_venv
echo "Mysql: Starting Container..." echo "Mysql: Starting Container..."
docker run -d --restart=always -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql docker run -d --restart=always -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=password mysql
echo "Mysql: Waiting for Mysql to Start..." echo "Mysql: Waiting for Mysql to Start..."
# Need to wait for DB to standup # Need to wait for DB to standup
sleep 30 sleep 30
docker exec mysql mysql -uroot -ppassword -e "set password = password('')"
echo "Mysql: Complete - PORT 3306" echo "Mysql: Complete - PORT 3306"
echo "------------------------------------------" echo "------------------------------------------"
echo " " echo " "
echo "PHPMyAdmin: Starting Container..."
docker run -d --restart=always --name phpmyadmin --link mysql:mysql -p 8081:80 nazarpc/phpmyadmin
echo "PHPMyAdmin: Complete - http://localhost:8081"
echo "------------------------------------------"
echo " "
echo "ELK: Starting Container..." echo "ELK: Starting Container..."
docker run --restart=always --name kibana -d -p 514:514 -p 514:514/udp -p 8083:5601 -v /etc/localtime:/etc/localtime:ro pschiffe/rsyslog-elasticsearch-kibana docker run --restart=always --name kibana -d -p 514:514 -p 514:514/udp -p 8083:5601 -v /etc/localtime:/etc/localtime:ro pschiffe/rsyslog-elasticsearch-kibana
echo "ELK: Complete - http://localhost:8083" echo "ELK: Complete - http://localhost:8083"
@ -31,8 +29,8 @@ echo "------------------------------------------"
echo " " echo " "
echo "Redis: Starting Master Container..." echo "Redis: Starting Master Container..."
docker run -d --restart=always -p 80:80 -v ~/data/redis0:/data --name=redis stajkowski/redis-master docker run -d --restart=always -p 6379:6379 -v ~/data/redis0:/data --name=redis stajkowski/redis-master
echo "Redis: Complete - PORT 80" echo "Redis: Complete - PORT 6379"
echo "------------------------------------------" echo "------------------------------------------"
echo " " echo " "
@ -43,8 +41,8 @@ echo "------------------------------------------"
echo " " echo " "
echo "Neutron/Quark: Starting Container..." echo "Neutron/Quark: Starting Container..."
docker run -d -v $(pwd):/opt/quark -v ~/neutron:/opt/configs -p 9696:9696 --link mysql:docker-mysql --link kibana:docker-kibana --link rabbitmq:docker-rabbitmq --link redis-sentinel:docker-redis-sentinel --name quark stajkowski/quark docker run -d -v $(pwd):/opt/quark -v ~/neutron:/opt/configs -v $(pwd)/quark_container_logs:/var/log/neutron -v $(pwd)/quark_container_venv:/opt/venv/lib/python2.7/site-packages/quark -p 9696:9696 --link mysql:docker-mysql --link kibana:docker-kibana --link rabbitmq:docker-rabbitmq --link redis-sentinel:docker-redis-sentinel --name quark stajkowski/quark
# docker run --entrypoint /bin/bash -v $(pwd):/opt/quark -v ~/neutron:/opt/configs -p 9696:9696 --link mysql:docker-mysql --link kibana:docker-kibana --link rabbitmq:docker-rabbitmq --link redis-sentinel:docker-redis-sentinel --name quark stajkowski/quark # docker run --entrypoint /bin/bash -v $(pwd):/opt/quark -v ~/neutron:/opt/configs -v $(pwd)/quark_container_logs:/var/log/neutron -v $(pwd)/quark_container_venv:/opt/venv -p 9696:9696 --link mysql:docker-mysql --link kibana:docker-kibana --link rabbitmq:docker-rabbitmq --link redis-sentinel:docker-redis-sentinel --name quark stajkowski/quark
echo "Neutron/Quark: Waiting for Neutron to Start..." echo "Neutron/Quark: Waiting for Neutron to Start..."
# Need to wait for DB to standup # Need to wait for DB to standup
sleep 5 sleep 5

View File

@ -0,0 +1,27 @@
FROM debian:oldstable
RUN apt-get update
RUN apt-get install -y python2.7
RUN update-alternatives --install /usr/bin/python python /usr/bin/python2.7 10
RUN apt-get install -y python-pip python-dev libmysqlclient-dev rpm bzip2 wget git build-essential libssl-dev libffi-dev
RUN pip install --upgrade cffi pyasn1
RUN pip install virtualenv PyYAML jinja2 paramiko
RUN git clone https://github.com/ansible/ansible.git
RUN cd ansible
RUN cd ansible && git checkout tags/v1.9.1-1
RUN cd ansible && make install
RUN mkdir /etc/ansible
RUN cd ansible && cp examples/ansible.cfg /etc/ansible/.
ENTRYPOINT /bin/bash

View File

@ -0,0 +1,27 @@
FROM debian:7
RUN apt-get update
RUN apt-get install -y python2.7
RUN update-alternatives --install /usr/bin/python python /usr/bin/python2.7 10
RUN apt-get install -y python-pip python-dev libmysqlclient-dev rpm bzip2 wget git build-essential libssl-dev libffi-dev
RUN pip install --upgrade cffi pyasn1
RUN pip install virtualenv PyYAML jinja2 paramiko
RUN git clone https://github.com/ansible/ansible.git
RUN cd ansible
RUN cd ansible && git checkout tags/v1.9.1-1
RUN cd ansible && make install
RUN mkdir /etc/ansible
RUN cd ansible && cp examples/ansible.cfg /etc/ansible/.
ENTRYPOINT /bin/bash

View File

@ -0,0 +1,27 @@
FROM debian:8
RUN apt-get update
RUN apt-get install -y python2.7
RUN update-alternatives --install /usr/bin/python python /usr/bin/python2.7 10
RUN apt-get install -y python-pip python-dev libmysqlclient-dev rpm bzip2 wget git build-essential libssl-dev libffi-dev
RUN pip install --upgrade cffi pyasn1
RUN pip install virtualenv PyYAML jinja2 paramiko
RUN git clone https://github.com/ansible/ansible.git
RUN cd ansible
RUN cd ansible && git checkout tags/v1.9.1-1
RUN cd ansible && make install
RUN mkdir /etc/ansible
RUN cd ansible && cp examples/ansible.cfg /etc/ansible/.
ENTRYPOINT /bin/bash

View File

@ -7,7 +7,7 @@ RUN pip install virtualenv
# Configure Rsyslog and Provision DB # Configure Rsyslog and Provision DB
RUN echo 'local0.* @@docker-kibana:514' > /etc/rsyslog.d/60-neutron.conf RUN echo 'local0.* @@docker-kibana:514' > /etc/rsyslog.d/60-neutron.conf
RUN echo "service rsyslog restart" > ~/entrypoint.sh RUN echo "service rsyslog restart" > ~/entrypoint.sh
RUN echo 'mysql -h docker-mysql -u root -ppassword -e "CREATE DATABASE neutron"' >> ~/entrypoint.sh RUN echo 'mysql -h docker-mysql -u root -e "CREATE DATABASE neutron"' >> ~/entrypoint.sh
# Update setuptools # Update setuptools
RUN wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python RUN wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
@ -40,6 +40,9 @@ RUN echo "cd /opt/wafflehaus.neutron && git pull" >> ~/entrypoint.sh
RUN echo "source /opt/venv/bin/activate && pip install -U -r /opt/wafflehaus.neutron/requirements.txt" >> ~/entrypoint.sh RUN echo "source /opt/venv/bin/activate && pip install -U -r /opt/wafflehaus.neutron/requirements.txt" >> ~/entrypoint.sh
RUN echo "cd /opt/wafflehaus.neutron && source /opt/venv/bin/activate && python setup.py develop" >> ~/entrypoint.sh RUN echo "cd /opt/wafflehaus.neutron && source /opt/venv/bin/activate && python setup.py develop" >> ~/entrypoint.sh
# Install debug tools
RUN echo "source /opt/venv/bin/activate && pip install -U ipdb" >> ~/entrypoint.sh
# Put configuration files in place and start Neutron # Put configuration files in place and start Neutron
RUN echo "cp /opt/quark/docker.neutron.conf ~/neutron.conf" >> ~/entrypoint.sh RUN echo "cp /opt/quark/docker.neutron.conf ~/neutron.conf" >> ~/entrypoint.sh
RUN echo "cp /opt/quark/docker.apipaste.ini ~/api-paste.ini" >> ~/entrypoint.sh RUN echo "cp /opt/quark/docker.apipaste.ini ~/api-paste.ini" >> ~/entrypoint.sh

View File

@ -0,0 +1,20 @@
FROM stajkowski/redis-base:latest
ENV DEBIAN_FRONTEND noninteractive
##///*******************************************************/
##// BELOW wil not work via
##// ENTRYPOINT["redis-server", "/etc/redis/redis.conf"]
##// ^^^ will reqiure intermediate bash.sh run to achieve this"
##// set redis default to bind to all nic's.
#//RUN sed -i 's/^\(bind .*\)$/# \1/' /etc/redis/redis.conf
#// #change ports as needed from 6379 to ...
#//RUN sed -i "s/port 6379/port 80/" /etc/redis/redis.conf
#///*******************************************************/
EXPOSE 6379
VOLUME ["/data"]
ENTRYPOINT ["redis-server", "--port", "6379"]
##//////////////////////////////////////////////////////////////////
# build: docker build -t vigour/redis-master .
# run: docker run -p 80:80 -v ~/data/redis0:/data -it --detach --name=redis0 vigour/redis-master
# cli: docker run -v -p 80:80 ~/data/redis0:/data -it --rm --name=redis0 vigour/redis-masters

View File

@ -0,0 +1,22 @@
FROM stajkowski/redis-base:latest
ENV DEBIAN_FRONTEND noninteractive
##///*******************************************************/
## set redis default to bind to all nic's.
RUN sed -i 's/^\(bind .*\)$/# \1/' /etc/redis/redis.conf
#change ports as needed from 6379 to ...
RUN echo "port 6380" > /etc/redis/sentinel.conf
RUN echo "sentinel monitor mymaster docker-redis 6379 2" >> /etc/redis/sentinel.conf
RUN echo "sentinel down-after-milliseconds mymaster 60000" >> /etc/redis/sentinel.conf
RUN echo "sentinel failover-timeout mymaster 180000" >> /etc/redis/sentinel.conf
RUN echo "sentinel parallel-syncs mymaster 1" >> /etc/redis/sentinel.conf
##///*******************************************************/
EXPOSE 6380
VOLUME ["/data"]
WORKDIR /data
ENTRYPOINT ["redis-server", "/etc/redis/sentinel.conf", "--sentinel"]
##//////////////////////////////////////////////////////////////////
# build: docker build -t vigour/redis-master .
# run: docker run -v ~/data/redis0:/data -it --detach --name=redis0 vigour/redis-master
# cli: docker run -v ~/data/redis0:/data -it --rm --name=redis0 vigour/redis-master

View File

@ -0,0 +1,28 @@
FROM vigour/redis-base:latest
ENV DEBIAN_FRONTEND noninteractive
##///*******************************************************/
## set redis default to bind to all nic's.
RUN sed -i 's/^\(bind .*\)$/# \1/' /etc/redis/redis.conf
#change ports as needed from 6379 to ...
#RUN sed -i "s/port 6379/port 6380/" /etc/redis/redis.conf
##//------------------------
## add a custom start script
##//------------------------
RUN touch /start_slave.sh && chmod +x /start_slave.sh && \
echo "#!/bin/bash" > /start_slave.sh > /start_slave.sh && \
echo "#" >> /start_slave.sh && \
echo "if [ -z \"$REDIS_MASTER_PORT_6379_TCP_ADDR\" ]; then" >> /start_slave.sh && \
echo "echo \"REDIS_MASTER_PORT_6379_TCP_ADDR not defined. Did you run with -link?\";" >> /start_slave.sh && \
echo "exit 7;" >> /start_slave.sh && \
echo "fi" >> /start_slave.sh && \
echo "# exec allows redis-server to receive signals for clean shutdown" >> /start_slave.sh && \
echo "exec /usr/local/bin/redis-server --slaveof $REDIS_MASTER_PORT_6379_TCP_ADDR $REDIS_MASTER_PORT_6379_TCP_PORT $*" >> /start_slave.sh
##///*******************************************************/
EXPOSE 6379
VOLUME ["/data"]
ENTRYPOINT ["./start-slave.sh", "--dir", "/data"]
##//////////////////////////////////////////////////////////////////
# build: docker build -t vigour/redis-slave .
# run: docker run -P --detach --name=redis0_slave --link=redis0:redis_master vigour/redis-slave
# cli: docker run -P -it --rm --name=redis0 vigour/redis-master