Docker通过Nginx容器实现域名转发

有些时候一台服务器上面需要架设多个网站,而同一个服务器又只有一个80端口,所以这是一个非常麻烦的事……

我在docker里面架设了两个wordpress,希望分别通过a.com和b.com转发到不同的容器中。

首先大致介绍一下nginx的转发配置

server {
    listen       80;
    server_name blog.mhy12345.xyz;

    location / {
		proxy_pass      http://wordpress_wordpress;
		proxy_set_header    Host host; 		proxy_set_header    X-Real-IPremote_addr;
		proxy_set_header    X-Forwarded-Proto http;
		proxy_set_header Connection keep-alive;
        proxy_connect_timeout   150;
        proxy_send_timeout  100;
        proxy_read_timeout  100;
        proxy_buffers       4 32k;
        client_max_body_size    8m;
        client_body_buffer_size 128;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

监听blog.mhy12345.xyz:80,对于任意的路径,转发到地址:http://wordpress_wordpress,后面那几行都在转发过程中修改header,具体是不是有用我也不知道。这个内容复制两遍,放入Nginx对应位置(/etc/nginx/conf.d/default.conf),就可以实现对于两个容器的转发了。

顺便给一下docker-compose.yml的写法

nginx-host:
        container_name: nginx-host
        image: nginx-host-image
        external_links:
                - wordpress_wordpress:wordpress_wordpress
                - hahaha_wordpress:hahaha_wordpress
        ports:
                - 80:80

这里解释了为什么之前的URL是http://wordpress_wordpress,这是由于docker内部容器链接的dns设置了wordpress_wordpress的ip地址。

参考:http://www.cnblogs.com/Jarvin/p/5796193.html

当然,这一部分相当糟糕,原因是:

缓存!

是的,就是这东西,缓存!

docker的image创建有缓存,这个可以直接通过添加–no-cache参数

docker build ./Image --no-cache -t nginx-host-image

解决。

还有更可怕的是“浏览器缓存”

谁tm想得到浏览器会把跳转页面缓存下来啊……

每次输入http://blog.mhy12345.xyz ,自动重定向到https://blog.mhy12345.xyz:8022 ,根本找不出哪里有问题……

最后吐槽腾讯云学生机真是坑,一个G内存,5个docker容器就撑爆了……之后扩成两个G,然后月租上百了……

Ipython Notebook 使用方法

ipython notebook是个人认为使用python处理课题研究的非常方便的工具。

使用浏览器巧妙解决了远程服务器编程的难题,真不知道设计者是怎么脑洞出来的。

而notebook的核心思想是维护一系列cell,每一个cell里面一句python语句,你可以非常方便的跳转到不同的cell执行下一句话。

下面简单总结一下常用的快捷键

编辑/运行块

Enter 编辑当前块
Alt-Enter 运行块,下方插入

复制粘贴块

X 剪切块
C 复制块
V 粘贴块

分裂合并块

Shift+M 合并当前块与下一块
Ctrl+Shift+- 按光标位置分割当前块

 

Tensorflow学习笔记1-源码学习

TensorFlow 编译

tensorflow可以通过pip安装,也可以通过源码安装,其中pip安装直接

[ccei]pip3 install tensorflow[/ccei]

即可

基于源码的安装教程在https://www.tensorflow.org/install/install_sources 可找到,核心难点在于处理包的依赖问题

[ccei]sudo pip install six numpy wheel
brew install coreutils[/ccei]

运行./configure检查是否完全安装依赖库

TensorFlow 使用

使用tensorflow解决MNIST问题

[cce_python]
import input_data
import tensorflow as tf

mnist = input_data.read_data_sets("data/",one_hot=True)
sess = tf.InteractiveSession()
x = tf.placeholder("float", shape=[None, 784])
y_ = tf.placeholder("float", shape=[None, 10])
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
sess.run(tf.global_variables_initializer())
cross_entropy = -tf.reduce_sum(y_*tf.log(y))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
for i in range(1000):
    batch = mnist.train.next_batch(50)#随机选择50个
    train_step.run(feed_dict={x: batch[0], y_: batch[1]})
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))


print(accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
[/cce_python]

具体每一个函数都是干嘛的太麻烦,就不写了,反正代码也不是我写的,网上一查一大堆……

悲惨与幸福——《活着》观后感

《活着》这部电影是少有的改编小说而没有掉味的一部作品

甚至将小说中的“悲惨”化为了“温馨”,全篇终结在了一家人吃饭的场景,纵使我自己知道最后的结局,也不免有一丝憧憬。

也许这就是幸福吧。

另一方面,电影突出了时代对于人的影响,相关影评也多次提及时代中的人性不曾变过。让我不禁思考起来,是否现在所处的所谓“黄金时代”在未来看也似我们回顾文革时期一样,感觉幼稚、无知?而我们自己又有什么办法可以快时代一步,不被潮流冲昏头脑?也许确实是得“以史为鉴”了。

Ubuntu 16.04 & Docker 搭建 WordPress

我承认在半期考试前搭博客是非常颓,不过,whatever……

有尝试下载apache2+php+mysql的标准安装包安装方式,最后还是放弃了。大概原因是服务器上本身已经装了一些东西,各种安装包依赖关系炸了,最后直接把服务器整挂了>_<

之后突然想到,docker不就是用来隔离环境,解决各种冲突的么,是不是wordpress可以在docker里面搭?事实证明,在外部包爆炸后,docker内部也会受影响,在docker里面pull了mysql竟然都运行不了。各种调错未果之后,果断重装了服务器。果真在新系统下一切ok……

之后就相当简单,在dockerhub上面我们可以发现已经有一个叫做wordpress的镜像,而且有详细的安装说明,其中使用到了一个叫做的docker-compose工具,可以一键创建多个容器:

[cce]
wordpress:
    image: wordpress
    ports:
        - "80:80"
    environment:
        WORDPRESS_DB_PASSWORD: .....
    links:
        - mysql:mysql
mysql:
    image: mysql
    environment:
        MYSQL_ROOT_PASSWORD: .....
[/cce]

大概就是建立两个容器,分别是数据库mysql和wordpress,然后wordpress连接mysql

由于实在太简单,也没啥好说的了