Fra*_*ain 2 nginx docker docker-compose
该搬运工撰写文档指定对links已被废弃,应替换depends_on。我不知道确切如何。
这是links具有3个服务的应用程序的工作docker-compose文件(带有说明):
version: "3.1"
services:
nginx:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- ./php/content:/srv/www/content
- ./static:/srv/www/static
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
links:
- php:php-app
- nodejs:nodejs-app
nodejs:
image: node:alpine
environment:
NODE_ENV: production
working_dir: /home/app
restart: always
volumes:
- ./nodejs:/home/app
links:
- php:php-app
command: ["node", "index"]
php:
image: php:apache
volumes:
- ./php:/var/www/html
Run Code Online (Sandbox Code Playgroud)
相关的nginx default.conf:
server {
listen 80;
root /srv/www;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
location / {
try_files $uri @nodejs;
}
location /api {
rewrite ^([^.\?]*[^/])$ $1/ break;
proxy_pass http://php-app:80;
}
location @nodejs {
proxy_pass http://nodejs-app:8080;
}
}
Run Code Online (Sandbox Code Playgroud)
这些links说明将别名从docker服务名称proxy_pass 命名为nginx conf中的名称。
如何links在depends_on不修改nginx配置的情况下替换docker-compose文件中的指令(并保留别名)?
docker compose文档指定
links已弃用,应将替换为depends_on。
它不是。文档只说
links还以与相同的方式表示服务之间的依赖关系depends_on,因此它们确定了服务启动的顺序。
我看不出结论如何,您应该使用depends_on而不是links。相反,它说,如果您需要在另一个容器中的某个容器中运行某些内容,则应使用depends_on,而不是links。(例如,您command在php容器中指定正在运行的迁移,并且需要等待postgres容器)。
另一方面,links有警告说
除非您绝对需要继续使用它,否则我们建议您使用用户定义的网络来促进两个容器之间的通信,而不要使用
--link。
在此背景下,--link对于dockerCLI是一样的东西links在docker-compose.yml。
到目前为止,如果您的容器位于一个网络上,则不需要任何其他特殊规范。除非另行指定,否则默认网络驱动程序为bridge。因此,如果您指定docker-compose.yml以下内容,则应将所有容器放在一个网络上并自动相互识别。
version: "3.1"
services:
nginx:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- ./php/content:/srv/www/content
- ./static:/srv/www/static
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
nodejs:
image: node:alpine
environment:
NODE_ENV: production
working_dir: /home/app
restart: always
volumes:
- ./nodejs:/home/app
command: ["node", "index"]
php:
image: php:apache
volumes:
- ./php:/var/www/html
Run Code Online (Sandbox Code Playgroud)
在这种情况下nginx应与
location / {
try_files $uri nodejs;
}
Run Code Online (Sandbox Code Playgroud)
和
location /api {
rewrite ^([^.\?]*[^/])$ $1/ break;
proxy_pass http://php:80;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3054 次 |
| 最近记录: |