【转】docker安装PostgreSQL
原文:https://blog.csdn.net/liuyueyi1995/article/details/61204205
你先确认这两件事:1)执行 docker exec -it dream.php bash,到 php 存放目录看看,如果看不到你的文件,目录映射多半有问题;2)确认 fastcgi_param 设置的路径,先配成绝对路径(如上文)试试。
--------------------------------------------------------------------------------------------------------------------------------------
0 任务简介
- 在
Ubuntu 16.04虚拟机中安装docker - 使用
docker安装PostgreSQL - 完成端口映射使得外部机器可以访问虚拟机中的数据库
1 安装docker
这一部分比较简单,不过考虑到完整性,还是列出来吧。
我这次选择的是docker-ce,安装流程如下:
1.1 建立 repository
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
- 1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 1
sudo apt-key fingerprint 0EBFCD88
- 1
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- 1
1.2 安装docker
sudo apt-get update
- 1
sudo apt-get install docker-ce
- 1
2 安装PostgreSQL
docker pull postgres:9.4
- 1
3 创建容器
docker的容器默认情况下只能由本地主机访问,即A主机上的容器不能被B主机访问,所以要做端口映射。
docker run --name postgres1 -e POSTGRES_PASSWORD=password -p 54321:5432 -d postgres:9.4
- 1
解释: run,创建并运行一个容器; --name,指定创建的容器的名字; -e POSTGRES_PASSWORD=password,设置环境变量,指定数据库的登录口令为password; -p 54321:5432,端口映射将容器的5432端口映射到外部机器的54321端口; -d postgres:9.4,指定使用postgres:9.4作为镜像。
3.1 验证结果
之后运行docker ps -a,结果和下表类似:
| CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
|---|---|---|---|---|---|---|
| f6951e0c5c77 | postgres:9.4 | “docker-entrypoint…” | 38 minutes ago | Up 38 minutes | 0.0.0.0:54321->5432/tcp | postgres1 |
3.2 关键点
我自己安装的过程中遇到了不少的坑,我认为最重要的一点是docker命令中参数的顺序。
例如端口映射的-p 54321:5432的位置如果过于靠后,则会导致映射失败。
4 连接数据库
之前的准备工作都已完成,下一步就是从外部访问数据库了。
这一步就很常规了:
psql -U postgres -h 192.168.100.172 -p 54321
- 1
注意:
postgres镜像默认的用户名为postgres,
登陆口令为创建容器是指定的值。
5 参考文献
[1] docker官网
[2] postgres镜像官方文档
[3] 非常详细的 Docker 学习笔记
------------------------------------------------------------------------------------------docker nginx php-fpm 的配置----------------------------
原文:https://segmentfault.com/a/1190000007056245
看完 docker 官方教程,想搭个本地 php 开发环境,可搜了一圈,也没找到特别满意的文章,顺手总结一个。
假设
- 你知道 nginx、php-fpm 是什么
- 你了解 docker 的基本命令
运行环境
MacBook Pro,OSX 10.11.5
启动 php-fpm
解释执行 php 需要 php-fpm,先让它运行起来:
docker run --name dream-php -d \
-v ~/Workspace/tmp/www:/var/www/html:ro \
php:7.1-fpm
说明:
- dream-php 是容器的名字。
- ~/Workspace/tmp/www 是本地 php 文件的存储目录,/var/www/html 是容器内 php 文件的存储目录,ro 表示只读。
编辑 nginx 配置文件
本地存储路径:
~/Workspace/tmp/docker/nginx/conf.d/default.conf
配置文件内容:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
说明:
- php:9000 表示 php-fpm 服务的 URL,下文还会提及。
- /var/www/html 是 dream-php 中 php 文件的存储路径,经 docker 映射,变成本地路径 ~/Workspace/tmp/www(可以再看一眼 php-fpm 启动命令)
启动 nginx
docker run --name dream-nginx -p 80:80 -d \
-v ~/Workspace/tmp/www:/usr/share/nginx/html:ro \
-v ~/Workspace/tmp/docker/nginx/conf.d:/etc/nginx/conf.d:ro \
--link dream-php:php \
nginx
说明:
- -p 80:80 用于添加端口映射,把 dream-nginx 中的 80 端口暴露出来。
- ~/Workspace/tmp/www 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
- ~/Workspace/tmp/docker/nginx/conf.d 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
- --link dream-php:php 把 dream-php 的网络并入 dream-nginx,并通过修改 dream-nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
测试结果
在 ~/Workspace/tmp/www 下放两个文件:
index.html
<html><body><h1>Hello World</h1></body></html>
phpinfo.php
<?php phpinfo();
接下来看结果吧:
如果看到 Hello World 和熟悉的 phpinfo,那么大功告成。
访问 index.html 时,nginx 读的是 /usr/share/nginx/html/index.html,这个路径经 dream.nginx 转换变成本地的 ~/Workspace/tmp/www/index.html。
访问 phpinfo.php 时,nginx 让 php-frm 执行 /var/www/html/phpinfo.php,这个路径经 dream.php 转换成 ~/Workspace/tmp/www/phpinfo.php。
FAQ
怎样观察容器内文件系统:
docker exec -it dream-nginx bash
【转】docker安装PostgreSQL的更多相关文章
- docker安装postgresql
1.在linux执行以下代码: docker run -p : -v /home/docker/postgresql/data:/var/lib/postgresql/data -e POSTGRES ...
- docker 安装 postgresql
docker拉去镜像以及配置生成容器的步骤几乎和之前的nginx安装一样,直接写下面的命令了 1. docker pull postgres 2. docker run --name xf-postg ...
- Docker安装带中文全文搜索插件zhparser的Postgresql数据库
上一篇讲了在已经安装了PG数据库的情况下,安装全文搜索插件zhparser遇到的问题.在一个全新的环境中安装带有全文搜索插件zhparser的PG数据库,可以使用已经做好的Docker镜像,在安装的过 ...
- docker安装并持久化postgresql数据库
安装docker步骤略过 1.拉取postgresql镜像 docker pull postgresql 2.创建本地卷,数据卷可以在容器之间共享和重用, 默认会一直存在,即使容器被删除(docker ...
- Docker安装Gitlab
一.Ubuntu16.4上Docker安装Gitlab 1.安装docker 参见:https://docs.docker.com/engine/installation/linux/ubuntuli ...
- Docker安装MySQL数据库
本文翻译自:MySQL Docker Containers:Understanding the basics 1.下载MySQL镜像 docker pull mysql:5.6 如此便可以下载最新的M ...
- docker安装hive笔记
前两篇文章介绍了docker的基本命令如何安装hadoop 那么大家会比较了解docker的基本语法的安装过程.那么咱们今天来一起安装一下hive. 安装 1.下载gitHub,地址:https:// ...
- atlassian-confluence - docker安装
一下内容在centos 7安装成功.一.安装docker 1.yum安装docker12 yum update # 更新yumyum install docker # yum安装docker 2.开启 ...
- 利用docker安装gitlab
安装docker 安装 virtualbox 下载 dockertoolbox并安装 官网的服务器一直连不上, 幸亏还有这个 https://get.daocloud.io/toolbox/ 比 ht ...
随机推荐
- [03]使用阿里RAP搭建前端Mock Server
MockServer可以减少前端开发对后端的依赖,提高前端开发的效率,同时也利于团队的协作. 什么是RAP? RAP是阿里团队出的一款WEB接口管理工具,帮助开发人员更高效的管理接口文档,同时通过分析 ...
- Spring Cloud配置文件加载优先级简述
Spring Cloud中配置文件的加载机制与其它的Spring Boot应用存在不一样的地方:如它引入了bootstrap.properties的配置文件,同时也支持从配置中心中加载配置文件等:本文 ...
- 理想中的SQL语句条件拼接方式
背景 Orm用过一些,但处理增删改上面做的都不错.但是查询上跟我想要的效果总是差了一点.我想要的效果则是这样,基于某种命名规则进行传参,后台解析器知道命名规则即可知道它要查询什么样的数据. 谈谈我之前 ...
- YYH的王国(NOIP模拟赛Round 6)
题目描述 YYH拥有一个有n个城市的国家,编号为1~n.其中城市i到城市j的路径长度为i和j的最小公倍数.现在YYH想建一些高速公路,使得任意两座城市都能通过高速公路直接或间接到达.建造一条高速公路的 ...
- insmod模块加载过程代码分析1【转】
转自:http://blog.chinaunix.net/uid-27717694-id-3966290.html 一.概述模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到 ...
- zabbix 硬盘状态收集,制作表格
将zabbix首页复制到a文件里,这里主要是用到首页里 最近出现的问题 的信息 # -*- coding:utf-8 -*- import time import os from openpyxl i ...
- 【推荐】nodeJS后台守护进程-forever
A simple CLI tool for ensuring that a given node script runs continuously (i.e. forever) 本地执行: npm i ...
- python--websocket数据解析
# websocket实现原理 ''' 1.服务端开启socket,监听ip和端口 2.客户端发送连接请求(带上ip和端口) 3.服务端允许连接 4.客户端生成一个随机字符串,和magic strin ...
- java 调用可执行文件时,ProcessBuilder异常CreateProcess error=2
java 调用其他应用程序时,可能在windows下没有问题,但是转到linux下,却会报这样那样的错误,比如有设计文件操作会报FileNotFoundException等等(如下代码): Proce ...
- linux nbd & qemu-nbd
网络块设备: Network Block Device 可以将一个远程主机的磁盘空间,当作一个块设备来使用.就像一块硬盘一样. 使用它,你可以很方便的将另一台服务器的硬盘空间,增加到本地服务器上 ...