Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

重新打包镜像,将环境的配置全部转为容器内来操作完成 #5

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 5 additions & 29 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,35 +1,11 @@
FROM centos:7
# 设置编码
ENV LANG en_US.UTF-8
# 同步时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
FROM registry.cn-hangzhou.aliyuncs.com/sourcegarden/python:centos7-3.6

# 1. 安装基本依赖
RUN yum update -y && yum install epel-release -y && yum install wget unzip epel-release nginx xz gcc automake zlib-devel openssl-devel supervisor groupinstall development libxslt-devel libxml2-devel libcurl-devel git -y
WORKDIR /var/www/codo-dns/

# 2. 准备python
RUN wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
RUN xz -d Python-3.6.6.tar.xz && tar xvf Python-3.6.6.tar && cd Python-3.6.6 && ./configure && make && make install

# 3. 安装pip依赖
RUN pip3 install --upgrade pip
RUN pip3 install -U git+https://github.com/ss1917/ops_sdk.git

# 4. 复制代码
RUN mkdir -p /var/www/
ADD . /var/www/codo-dns/
RUN pip3 install -r /var/www/codo-dns/requirements.txt

# 5. 安装pip依赖
RUN pip3 install -r /var/www/codo-dns/doc/requirements.txt

# 6. 日志
VOLUME /var/log/

# 7. 准备文件
COPY doc/nginx_ops.conf /etc/nginx/conf.d/default.conf
COPY doc/supervisor_ops.conf /etc/supervisord.conf
COPY docker/nginx_default.conf /etc/nginx/nginx.conf
COPY docker/nginx_ops.conf /etc/nginx/conf.d/codo-admin.conf
COPY docker/supervisor_ops.conf /etc/supervisord.conf

EXPOSE 80
CMD ["/usr/bin/supervisord"]
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
##### 添加解析
![menus](./doc/images/add_domain_zone.png)
##### 同步配置文件

![menus](./doc/images/python3_domain_sync.png)

#### 项目部署
Expand Down Expand Up @@ -62,7 +63,7 @@ curl -I -X GET -m 10 -o /dev/null -s -w %{http_code} http://dns.opendevops.cn:
[BIND 搭建](./doc/bind.md)

#### 多区域支持
- 把doc下的所有的named 开头的文件放入 bind服务器的 /var/named/chroot/etc/ 目录下
- 把docker下的所有的named 开头的文件放入 bind服务器的 /var/named/chroot/etc/ 目录下
- 这里是和 settings 下的默认bind配置文件进行关联

#### 自定义区域
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
64 changes: 64 additions & 0 deletions docker/nginx_default.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2 default_server;
# listen [::]:443 ssl http2 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }

}
7 changes: 4 additions & 3 deletions doc/nginx_ops.conf → docker/nginx_ops.conf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
upstream codo-dns{
upstream codo-dns-nginx{
server 127.0.0.1:9100;
server 127.0.0.1:9101;
}
Expand All @@ -7,12 +7,13 @@ upstream codo-dns{
server {
listen 80;
server_name dns.opendevops.cn;
access_log /var/log/nginx/codo-dns-access.log;
error_log /var/log/nginx/codo-dns-error.log;
location / {
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://codo-dns;

proxy_pass http://codo-dns-nginx;
}
}
31 changes: 31 additions & 0 deletions docker/prestart.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/sh
cd /var/www/codo-dns/

#域名管理
CRON_DB_DBNAME='codo_dns'
sed -i "s#cookie_secret = .*#cookie_secret = '${cookie_secret}'#g" settings.py && \
sed -i "s#DEFAULT_DB_DBHOST = .*#DEFAULT_DB_DBHOST = os.getenv('DEFAULT_DB_DBHOST', '${DEFAULT_DB_DBHOST}')#g" settings.py && \
sed -i "s#DEFAULT_DB_DBPORT = .*#DEFAULT_DB_DBPORT = os.getenv('DEFAULT_DB_DBPORT', '${DEFAULT_DB_DBPORT}')#g" settings.py && \
sed -i "s#DEFAULT_DB_DBUSER = .*#DEFAULT_DB_DBUSER = os.getenv('DEFAULT_DB_DBUSER', '${DEFAULT_DB_DBUSER}')#g" settings.py && \
sed -i "s#DEFAULT_DB_DBPWD = .*#DEFAULT_DB_DBPWD = os.getenv('DEFAULT_DB_DBPWD', '${DEFAULT_DB_DBPWD}')#g" settings.py && \
sed -i "s#DEFAULT_DB_DBNAME = .*#DEFAULT_DB_DBNAME = os.getenv('DEFAULT_DB_DBNAME', '${CRON_DB_DBNAME}')#g" settings.py && \
sed -i "s#READONLY_DB_DBHOST = .*#READONLY_DB_DBHOST = os.getenv('READONLY_DB_DBHOST', '${READONLY_DB_DBHOST}')#g" settings.py && \
sed -i "s#READONLY_DB_DBPORT = .*#READONLY_DB_DBPORT = os.getenv('READONLY_DB_DBPORT', '${READONLY_DB_DBPORT}')#g" settings.py && \
sed -i "s#READONLY_DB_DBUSER = .*#READONLY_DB_DBUSER = os.getenv('READONLY_DB_DBUSER', '${READONLY_DB_DBUSER}')#g" settings.py && \
sed -i "s#READONLY_DB_DBPWD = .*#READONLY_DB_DBPWD = os.getenv('READONLY_DB_DBPWD', '${READONLY_DB_DBPWD}')#g" settings.py && \
sed -i "s#READONLY_DB_DBNAME = .*#READONLY_DB_DBNAME = os.getenv('READONLY_DB_DBNAME', '${CRON_DB_DBNAME}')#g" settings.py


try_num=0

while [[ $try_num -le 100 ]];
do
if $(curl -s ${DEFAULT_DB_DBHOST}:${DEFAULT_DB_DBPORT} > /dev/null);then
python3 db_sync.py
exit 0
else
echo 'wait mysql start to do db_sync.py'
fi
let try_num+=1
sleep 6
done
12 changes: 12 additions & 0 deletions doc/supervisor_ops.conf → docker/supervisor_ops.conf
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,18 @@ nodaemon=true
[group:dns,dns_cron]
programs=dns

[program:dns-prestart]
command=sh docker/prestart.sh
directory=/var/www/codo-dns
user=root
autostart = true
autorestart=false
redirect_stderr=true
stdout_logfile=/var/log/supervisor/codo-dns-prestart.log
loglevel=info
logfile_maxbytes=10MB
logfile_backups=1

[program:dns]
command=python3 startup.py --service=dns --port=91%(process_num)02d
process_name=%(program_name)s_%(process_num)02d
Expand Down
File renamed without changes.