一、compose简介
compose项目来源于之前的fig项目,使用python语言编写。compose项目主要用于编排部署docker的应用,本身与docker/swarm配合度很高
docker compose是docker编排服务的一部分,可以让用户在其他平台上快速的安装docker,dockercompose属于一个应用层的服务,用户可以定义哪个容器组运行哪个应用,它支持动态改变应用。
dockerfile可以让用户管理一个单独的容器,而compose则允许用户在一个模版yaml格式中定义一个相关联的容器,例如一个调度器,两个web服务器等。
一、我们先做一个基础的环境,用dockerfile做一个apache镜像。
以下是Apache的dockerfile。
1. #FROM docker.io/centos:centos6
2. MAINTAINER blxh@qy.com
3. RUN yum install -y httpd net-tools iputils
4. RUN sed 's/#ServerName www.example.com:80/ServerName www.benet.com/g' /etc/httpd/conf/httpd.conf
5. EXPOSE 80
6. CMD ["/usr/sbin/httpd","-DFOREGROUND"]
1.编写完成之后运行dockerfile
1. # docker build -t centos:http .
2. Sending build context to Docker daemon 2.048 kB
3. Step 1 : FROM docker.io/centos:centos6
4. Trying to pull repository docker.io/library/centos ...
5. centos6: Pulling from docker.io/library/centos
6.
7. b26de5a391ad: Downloading [=========================> ] 2.701 MB/70.04 MB
2.运行完成之后查看是否有http的镜像
1. # docker images
2. REPOSITORY TAG IMAGE ID CREATED SIZE
3. centos http 33e4acf38103 24 seconds ago 302 MB
4. docker.io/centos centos6 5dedbd63518e 9 days ago 194.3 MB
3.编写nginx-dockerfile,以下的nginx的dockerfile
1. #images of nginx
2. FROM docker.io/centos:centos6
3. RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel
4. RUN useradd -M -s /sbin/nologin nginx
5. ADD http://nginx.org/download/nginx-1.6.2.tar.gz .
6. RUN tar zxvf nginx-1.6.2.tar.gz
7. RUN mkdir -p /usr/local/nginx
8. RUN cd nginx-1.6.2 && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
9. RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
10. copy nginx.conf /usr/local/nginx/conf/nginx.conf
11. expose 80
12. CMD ["nginx"]
4.注意以上红色字段,我们需要拷贝一份nginx在当前目录。以下是nginx主配置内容
1. # ls
2. dockerfile nginx.conf
3. vim nginx.conf
4. #user nobody;
5. worker_processes 1;
6.
7. #error_log logs/error.log;
8. #error_log logs/error.log notice;
9. #error_log logs/error.log info;
10.
11. #pid logs/nginx.pid;
12.
13.
14. events {
15. worker_connections 1024;
16. }
17.
18.
19. http {
20. include mime.types;
21. default_type application/octet-stream;
22.
23. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
24. # '$status $body_bytes_sent "$http_referer" '
25. # '"$http_user_agent" "$http_x_forwarded_for"';
26.
27. #access_log logs/access.log main;
28.
29. sendfile on;
30. #tcp_nopush on;
31.
32. #keepalive_timeout 0;
33. keepalive_timeout 65;
34.
35. #gzip on;
36. upstream yankerp{
37. server Apache1:80 weight=1;
38. server Apache2:80 weight=1;
39. server Apache3:80 weight=1;
40. }
41. server {
42. listen 80;
43. server_name localhost;
44.
45. #charset koi8-r;
46.
47. #access_log logs/host.access.log main;
48.
49. location / {
50. root html;
51. index index.html index.htm;
52. proxy_pass http://yankerp;
53. }
54.
55. #error_page 404 /404.html;
56.
57. # redirect server error pages to the static page /50x.html
58. #
59. error_page 500 502 503 504 /50x.html;
60. location = /50x.html {
61. root html;
62. }
63.
64. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
65. #
66. #location ~ \.php$ {
67. # proxy_pass http://127.0.0.1;
68. #}
69.
70. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
71. #
72. #location ~ \.php$ {
73. # root html;
74. # fastcgi_pass 127.0.0.1:9000;
75. # fastcgi_index index.php;
76. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
77. # include fastcgi_params;
78. #}
79.
80. # deny access to .htaccess files, if Apache's document root
81. # concurs with nginx's one
82. #
83. #location ~ /\.ht {
84. # deny all;
85. #}
86. }
87.
88.
89. # another virtual host using mix of IP-, name-, and port-based configuration
90. #
91. #server {
92. # listen 8000;
93. # listen somename:8080;
94. # server_name somename alias another.alias;
95.
96. # location / {
97. # root html;
98. # index index.html index.htm;
99. # }
100. #}
101.
102.
103. # HTTPS server
104. #
105. #server {
106. # listen 443 ssl;
107. # server_name localhost;
108.
109. # ssl_certificate cert.pem;
110. # ssl_certificate_key cert.key;
111.
112. # ssl_session_cache shared:SSL:1m;
113. # ssl_session_timeout 5m;
114.
115. # ssl_ciphers HIGH:!aNULL:!MD5;
116. # ssl_prefer_server_ciphers on;
117.
118. # location / {
119. # root html;
120. # index index.html index.htm;
121. # }
122. #}
123.
124. }
125. daemon off;
5.随后运行nginx-dockerfile 注意那个后面的小点,代表当前位置。
1. # docker build -t centos:nginx .
2. Sending build context to Docker daemon 6.144 kB
3. Step 1 : FROM docker.io/centos:centos6
4. ---> 5dedbd63518e
5. Step 2 : RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel
6. ---> Running in 4c25bd1ebd47
7. Loaded plugins: fastestmirror, ovl
8. Setting up Install Process
运行完之后我们查看是否有nginx镜像
1. # docker images
2. REPOSITORY TAG IMAGE ID CREATED SIZE
3. centos nginx 155c0c66b4fc 41 seconds ago 316.4 MB
4. centos http 33e4acf38103 19 minutes ago 302 MB
5. docker.io/centos centos6 5dedbd63518e 9 days ago 194.3 MB
二、安装compose,在安装docker-compose时,先安装pip,pip就相当于redhat里面的yum
以下是安装的过程
1. # wget https://bootstrap.pypa.io/get-pip.py
2. --2017-09-23 14:56:25-- https://bootstrap.pypa.io/get-pip.py
3. 正在解析主机 bootstrap.pypa.io (bootstrap.pypa.io)... 151.101.76.175
4. 正在连接 bootstrap.pypa.io (bootstrap.pypa.io)|151.101.76.175|:443... 已连接。
5. 已发出 HTTP 请求,正在等待回应... 200 OK
6. 长度:1595408 (1.5M) [text/x-python]
7. 正在保存至: “get-pip.py”
8.
9. 29% [=================================> ] 477,486 29.8KB/s 剩余 45s
python get-pip.py
1. # python get-pip.py
2. Collecting pip
3. Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
4. 100% |████████████████████████████████| 1.3MB 43kB/s
5. Collecting wheel
6. Downloading wheel-0.30.0-py2.py3-none-any.whl (49kB)
7. 100% |████████████████████████████████| 51kB 21kB/s
8. Installing collected packages: pip, wheel
9. Successfully installed pip-9.0.1 wheel-0.30.0
安装完成时候在安装compose
[plain]
view plain
copy
1. # pip install docker-compose
2. Collecting docker-compose
3. Downloading docker_compose-1.16.1-py2.py3-none-any.whl (105kB)
4. 100% |████████████████████████████████| 112kB 14kB/s
5. Collecting texttable<0.10,>=0.9.0 (from docker-compose)
6. Downloading texttable-0.9.1.tar.gz
7. Collecting backports.ssl-match-hostname>=3.5; python_version < "3.5" (from docker-compose)
8. Downloading backports.ssl_match_hostname-3.5.0.1.tar.gz
9. Collecting docker<3.0,>=2.5.1 (from docker-compose)
10. Downloading docker-2.5.1-py2.py3-none-any.whl (111kB)
11. 100% |████████████████████████████████| 112kB 29kB/s
12. Collecting jsonschema<3,>=2.5.1 (from docker-compose)
13. Downloading jsonschema-2.6.0-py2.py3-none-any.whl
14. Collecting cached-property<2,>=1.2.0 (from docker-compose)
15. Downloading cached_property-1.3.1-py2.py3-none-any.whl
16. Requirement already satisfied: six<2,>=1.3.0 in /usr/lib/python2.7/site-packages (from docker-compose)
17. Collecting ipaddress>=1.0.16; python_version < "3.3" (from docker-compose)
18. Downloading ipaddress-1.0.18-py2-none-any.whl
19. Collecting enum34<2,>=1.0.4; python_version < "3.4" (from docker-compose)
20. Downloading enum34-1.1.6-py2-none-any.whl
21. Collecting websocket-client<1.0,>=0.32.0 (from docker-compose)
22. Downloading websocket_client-0.44.0-py2.py3-none-any.whl (199kB)
23. 100% |████████████████████████████████| 204kB 29kB/s
24. Collecting PyYAML<4,>=3.10 (from docker-compose)
25. Downloading PyYAML-3.12.tar.gz (253kB)
26. 100% |████████████████████████████████| 256kB 23kB/s
27. Collecting dockerpty<0.5,>=0.4.1 (from docker-compose)
28. Downloading dockerpty-0.4.1.tar.gz
29. Collecting requests!=2.11.0,<2.12,>=2.6.1 (from docker-compose)
30. Downloading requests-2.11.1-py2.py3-none-any.whl (514kB)
31. 100% |████████████████████████████████| 522kB 24kB/s
32. Collecting docopt<0.7,>=0.6.1 (from docker-compose)
33. Downloading docopt-0.6.2.tar.gz
34. Collecting docker-pycreds>=0.2.1 (from docker<3.0,>=2.5.1->docker-compose)
35. Downloading docker_pycreds-0.2.1-py2.py3-none-any.whl
36. Collecting functools32; python_version == "2.7" (from jsonschema<3,>=2.5.1->docker-compose)
37. Downloading functools32-3.2.3-2.zip
38. Building wheels for collected packages: texttable, backports.ssl-match-hostname, PyYAML, dockerpty, docopt, functools32
39. Running setup.py bdist_wheel for texttable ... done
40. Stored in directory: /root/.cache/pip/wheels/9e/53/a3/e452dc385103ee8e1f0df7b3457974b580d52ce662ee5a16cc
41. Running setup.py bdist_wheel for backports.ssl-match-hostname ... done
42. Stored in directory: /root/.cache/pip/wheels/5d/72/36/b2a31507b613967b728edc33378a5ff2ada0f62855b93c5ae1
43. Running setup.py bdist_wheel for PyYAML ... done
44. Stored in directory: /root/.cache/pip/wheels/2c/f7/79/13f3a12cd723892437c0cfbde1230ab4d82947ff7b3839a4fc
45. Running setup.py bdist_wheel for dockerpty ... done
46. Stored in directory: /root/.cache/pip/wheels/ae/d5/14/a25cbb003bd70ffefba0fdfbd5a5c4ea4d2a11bde7736f7482
47. Running setup.py bdist_wheel for docopt ... done
48. Stored in directory: /root/.cache/pip/wheels/b2/16/5f/c33a2bb5f2dce71205f8e65cbfd05647d79d441282be31fd82
49. Running setup.py bdist_wheel for functools32 ... done
50. Stored in directory: /root/.cache/pip/wheels/3c/d0/09/cd78d0ff4d6cfecfbd730782a7815a4571cd2cd4d2ed6e69d9
51. Successfully built texttable backports.ssl-match-hostname PyYAML dockerpty docopt functools32
52. Installing collected packages: texttable, backports.ssl-match-hostname, websocket-client, ipaddress, docker-pycreds, requests, docker, functools32, jsonschema, cached-property, enum34, PyYAML, dockerpty, docopt, docker-compose
53. Found existing installation: backports.ssl-match-hostname 3.4.0.2
54. Uninstalling backports.ssl-match-hostname-3.4.0.2:
55. Successfully uninstalled backports.ssl-match-hostname-3.4.0.2
56. Successfully installed PyYAML-3.12 backports.ssl-match-hostname-3.5.0.1 cached-property-1.3.1 docke
1. # ln -s /usr/bin/docker-compose /usr/local/bin/
接下来介绍几个术语
1. #build
2. Usage: build [options] [SERVICE...]
3.
4.
5. Options:
6. --force-rm Always remove intermediate containers.
7. --no-cache Do not use cache when building the image.
8. --pull Always attempt to pull a newer version of the image.
9. 当修改dockerfile或者docker-compose时,运行docker-compose build 重建镜像。 生成镜像后,可使用docker-compose up启动
10.
11.
12. config
13. Usage: config [options]
14.
15.
16. Options:
17. -q, --quiet 只验证配置,不输出。 当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
18. --services 打印服务名,一行一个
19. 验证和查看compose文件配置。
20. create
21. 为服务创建容器.只是单纯的create,还需要使用start启动compose
22.
23.
24. Usage: create [options] [SERVICE...]
25.
26.
27. Options:
28. --force-recreate 重新创建容器,即使他的配置和镜像没有改变,不兼容--no-recreate参数
29. --no-recreate 如果容器已经存在,不需要重新创建. 不兼容--force-recreate参数
30. --no-build 不创建镜像,即使缺失.
31. --build 创建容器前,生成镜像.
32. down
33. Usage: down [options]
34.
35.
36. Options:
37. --rmi type 删除镜像,类型必须是:
38. 'all': 删除compose文件中定义的所以镜像.
39. 'local': 删除镜像名为空的镜像
40. -v, --volumes 删除卷
41. attached to containers.
42. --remove-orphans Remove containers for services not defined in the
43. Compose file
44. 停止和删除容器、网络、卷、镜像,这些内容是通过docker-compose up命令创建的. 默认值删除 容器 网络,可以通过指定 rmi volumes参数删除镜像和卷
45.
46.
47. events
48. Usage: events [options] [SERVICE...]
49.
50.
51. Options:
52. --json 输出事件日志,json格式
53. 输出docker-compose 事件的日志,当执行docker-compose命令操作时,docker-compose even命令就会监控日志:
54. {
55. "service": "web",
56. "event": "create",
57. "container": "213cf75fc39a",
58. "image": "alpine:edge",
59. "time": "2015-11-20T18:01:03.615550",
60. }
61. exec
62. Usage: exec [options] SERVICE COMMAND [ARGS...]
63.
64.
65. Options:
66. -d 分离模式,后台运行命令.
67. --privileged 获取特权.
68. --user USER 指定运行的用户.
69. -T 禁用分配TTY. By default `docker-compose exec`
70. 分配 a TTY.
71. --index=index 当一个服务拥有多个容器时,可通过该参数登陆到该服务下的任何服务,例如:docker-compose exec --index=1 web /bin/bash ,web服务中包含多个容器
72. instances of a service [default: 1]
73. 和docker exec命令功能相同,可以通过service name登陆到容器中
74. e.g. docker-compose exec web sh
75. kill
76. Usage: kill [options] [SERVICE...]
77.
78.
79. Options:
80. -s SIGNAL 向容器发送信号. 默认是SIGKILL.
81. 通过发送 SIGKILL 信号来强制停止服务容器。支持通过参数来指定发送的信号:
82. $ docker-compose kill -s SIGINT
83. logs
84. Usage: logs [options] [SERVICE...]
85.
86.
87. Options:
88. --no-color 单色输出,不显示其他颜.
89. -f, --follow 跟踪日志输出,就是可以实时查看日志
90. -t, --timestamps 显示时间戳
91. --tail 从日志的结尾显示,--tail=200
92. 显示日志输出.
93. pause
94. Usage: pause [SERVICE...]
95. 暂停容器服务. docker-compose pause 暂停所有服务. docker-compose pause web,之后暂停web服务的容器。
96. unpause
97. Usage: unpause [SERVICE...]
98. 恢复容器服务. docker-compose unpause 恢复所有服务. docker-compose unpause web,之后恢复web服务的容器。
99. port
100. Usage: port [options] SERVICE PRIVATE_PORT
101.
102.
103. Options:
104. --protocol=proto tcp or udp [default: tcp]
105. --index=index index of the container if there are multiple
106. instances of a service [default: 1]
107. 输出服务的共有端口.
108. # docker-compose port web 8080 -- 8080为容器内部端口
109. 0.0.0.0:8884
110. ps
111. Usage: ps [options] [SERVICE...]
112.
113.
114. Options:
115. -q 只显示ID
116. 显示容器. 默认显示name、command、state、ports
117. pull
118. Usage: pull [options] [SERVICE...]
119.
120.
121. Options:
122. --ignore-pull-failures 忽略pull失败的镜像,继续pull其他镜像.
123. pull compose文件中所指明的镜像.
124. push
125. Usage: push [options] [SERVICE...]
126.
127.
128. Options:
129. --ignore-push-failures 忽略错误.
130. push compose文件中所指明的镜像
131. restart
132. Usage: restart [options] [SERVICE...]
133.
134.
135. Options:
136. -t, --timeout TIMEOUT Specify a shutdown timeout in seconds. (default: 10)
137. Restarts services.
138. rm
139. Usage: rm [options] [SERVICE...]
140.
141.
142. Options:
143. -f, --force Don't ask to confirm removal
144. -v 期初加载到容器的任何匿名卷
145. -a, --all Also remove one-off containers created by
146. docker-compose run
147. Removes stopped service containers. 如果服务在运行,需要先docker-compose stop 停止容器
148. By default, anonymous volumes attached to containers will not be removed. You can override this with -v. To list all volumes, use docker volume ls.
149. Any data which is not in a volume will be lost.
150. run
151. Usage: run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
152.
153.
154. Options:
155. -d 后台运行,输出容器名.
156. -e KEY=VAL 设置环境变量参数,可以使用多次
157. -u, --user="" 指定运行的用户
158. --no-deps 不启动link服务,只启动run的服务.
159. --rm 运行后删除容器,后台运行模式除外(-d).
160. -p, --publish=[] 开放端口
161. --service-ports compose文件中配置什么端口,就映射什么端口.
162. -T 禁用TTY.
163. -w, --workdir="" 设置工作目录
164. 启动web服务器,并执行bash命令.
165. $ docker-compose run web bash
166. 根据compose配置文件制定的端口,映射到主机:
167. $ docker-compose run --service-ports web python manage.py shell
168. 指定端口映射到主机:
169. $ docker-compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell
170. link db容器:
171. $ docker-compose run db psql -h db -U docker
172. 不linke容器,单独启动指定容器:
173. $ docker-compose run --no-deps web python manage.py shell
174. scale
175. Usage: scale [SERVICE=NUM...]
176. 设置服务的个数.
177. $ docker-compose scale web=2 worker=3
178. start
179. Usage: start [SERVICE...]
180. 启动服务.
181. stop
182. Usage: stop [options] [SERVICE...]
183.
184.
185. Options:
186. -t, --timeout TIMEOUT 关闭超时时间 (default: 10).
187. 停止容器.
188. up
189. Usage: up [options] [SERVICE...]
190.
191.
192. Options:
193. -d 后台运行,输出容器的名字.
194. Incompatible with --abort-on-container-exit.
195. --no-color 单色输出.
196. --no-deps 不启动link服务.
197. --force-recreate 强制重新创建compose服务,即使没有任何改变。重新创建后启动容器
198. Incompatible with --no-recreate.
199. --no-recreate 如果容器已经存在,不重新创建.
200. Incompatible with --force-recreate.
201. --no-build 不创建重启,即使镜像不存在.
202. --build 重新创建镜像,然后生成容器.
203. --abort-on-container-exit 任何容器停止,自动停止所有容器.
204. Incompatible with
下面创建一个web项目,一个nginx挂载三个web容器
docker-nginx目录作为工作目录,并在其中创建一个子目录nginx
[plain] view plain copy
1. # pwd
2. /root/docker-nginx
3. [root@yankerp docker-nginx]# mkdir nginx
4. [root@yankerp docker-nginx]# ll
5. 总用量 0
6. drwxr-xr-x. 2 root root 6 9月 23 15:16 nginx
在/root/docker-nginx/nginx下创建nginx的主配置文件nginx.conf
在/root/docker-nginx/下创建docker-compose.yml文件
下面是创建目录的内容
nginx.conf文件内容
1. # pwd
2. /root/docker-nginx/nginx
3. [root@yankerp nginx]# vim nginx.conf
4. [root@yankerp nginx]# cat nginx.conf
5.
6. #user nobody;
7. worker_processes 1;
8.
9. #error_log logs/error.log;
10. #error_log logs/error.log notice;
11. #error_log logs/error.log info;
12.
13. #pid logs/nginx.pid;
14.
15.
16. events {
17. worker_connections 1024;
18. }
19.
20.
21. http {
22. include mime.types;
23. default_type application/octet-stream;
24.
25. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
26. # '$status $body_bytes_sent "$http_referer" '
27. # '"$http_user_agent" "$http_x_forwarded_for"';
28.
29. #access_log logs/access.log main;
30.
31. sendfile on;
32. #tcp_nopush on;
33.
34. #keepalive_timeout 0;
35. keepalive_timeout 65;
36.
37. #gzip on;
38. upstream yankerp{
39. server Apache1:80 weight=1;
40. server Apache2:80 weight=1;
41. server Apache3:80 weight=1;
42. }
43. server {
44. listen 80;
45. server_name localhost;
46.
47. #charset koi8-r;
48.
49. #access_log logs/host.access.log main;
50.
51. location / {
52. root html;
53. index index.html index.htm;
54. proxy_pass http://yankerp;
55. }
56.
57. #error_page 404 /404.html;
58.
59. # redirect server error pages to the static page /50x.html
60. #
61. error_page 500 502 503 504 /50x.html;
62. location = /50x.html {
63. root html;
64. }
65.
66. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
67. #
68. #location ~ \.php$ {
69. # proxy_pass http://127.0.0.1;
70. #}
71.
72. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
73. #
74. #location ~ \.php$ {
75. # root html;
76. # fastcgi_pass 127.0.0.1:9000;
77. # fastcgi_index index.php;
78. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
79. # include fastcgi_params;
80. #}
81.
82. # deny access to .htaccess files, if Apache's document root
83. # concurs with nginx's one
84. #
85. #location ~ /\.ht {
86. # deny all;
87. #}
88. }
89.
90.
91. # another virtual host using mix of IP-, name-, and port-based configuration
92. #
93. #server {
94. # listen 8000;
95. # listen somename:8080;
96. # server_name somename alias another.alias;
97.
98. # location / {
99. # root html;
100. # index index.html index.htm;
101. # }
102. #}
103.
104.
105. # HTTPS server
106. #
107. #server {
108. # listen 443 ssl;
109. # server_name localhost;
110.
111. # ssl_certificate cert.pem;
112. # ssl_certificate_key cert.key;
113.
114. # ssl_session_cache shared:SSL:1m;
115. # ssl_session_timeout 5m;
116.
117. # ssl_ciphers HIGH:!aNULL:!MD5;
118. # ssl_prefer_server_ciphers on;
119.
120. # location / {
121. # root html;
122. # index index.html index.htm;
123. # }
124. #}
125.
126. }
127. daemon off;
yml文件内容
1. [root@yankerp docker-nginx]# pwd
2. /root/docker-nginx
3. [root@yankerp docker-nginx]# ls
4. docker-compose.yml nginx
5. [root@yankerp docker-nginx]# cat docker-compose.yml
6. Apache1:
7. image: centos:http
8. expose:
9. - 80
10.
11. Apache2:
12. image: centos:http
13. expose:
14. - 80
15.
16. Apache3:
17. image: centos:http
18. expose:
19. - 80
20.
21. nginx:
22. image: centos:nginx
23. links:
24. - Apache1
25. - Apache2
26. - Apache3
27. ports:
28. - "8000:80"
配置完成后运行compose项目
在docker-nginx目录下执行docker-compose up -d启动应用
1. # pwd
2. /root/docker-nginx
3. [root@yankerp docker-nginx]# docker-compose up -d
4. Creating dockernginx_Apache2_1 ...
5. Creating dockernginx_Apache1_1 ...
6. Creating dockernginx_Apache3_1 ...
7. Creating dockernginx_Apache2_1
8. Creating dockernginx_Apache1_1
9. Creating dockernginx_Apache2_1 ... done
10. Creating dockernginx_nginx_1 ...
11. Creating dockernginx_nginx_1 ... done
查看容器启动情况。
1. # docker ps
2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3. a7e7bed203a6 centos:nginx "nginx" 29 seconds ago Up 9 seconds 0.0.0.0:8000->80/tcp dockernginx_nginx_1
4. 8b6704eb5f6d centos:http "/usr/sbin/httpd -DFO" 39 seconds ago Up 28 seconds 80/tcp dockernginx_Apache3_1
5. fa540c849b72 centos:http "/usr/sbin/httpd -DFO" 39 seconds ago Up 29 seconds 80/tcp dockernginx_Apache1_1
6. 50c037a51a16 centos:http "/usr/sbin/httpd -DFO" 39 seconds ago Up 29 seconds 80/tcp dockernginx_Apache2_1
到这里有关于Docker-compose构建nginx反向代理配置就演示完毕了!!!希望对你有所帮助!!!@再见!!!!