@Moderators:您可以将标签 teampass 添加到标签列表吗?
我想运行Teampass作为一个 docker 容器,并以 nginx 作为代理。
我不确定问题是否在于 Teampass 自带了 Apache 并且对我的 nginx 起作用,或者是否我得到了其他完全错误的东西。
问题是,它没有通过此页面,因为与 mySQL 端口的连接不起作用。
当我尝试安装它时,没有运行 nginx ,一切都按预期进行。但是当我使用 nginx 时,它不再运行
docker-compose 文件:
teampass:
container_name: teampass
image: teampass/teampass
ports:
- 127.0.0.1:8787:80
volumes:
- /opt/teampass:/teampass
links:
- teampass_mysql
teampass_mysql:
restart: always
image: mysql/mysql-server:5.5
ports:
- 127.0.0.1:13306:3306
environment:
- MYSQL_ROOT_PASSWORD=TEAMPASS_MYSQL_ROOT_PASSWORD
- MYSQL_DATABASE=TEAMPASS_MYSQL_DATABASE
- MYSQL_PASSWORD=TEAMPASS_MYSQL_PASSWORD
- MYSQL_USER=TEAMPASS_MYSQL_USER
volumes:
- /opt/dbteampass:/var/lib/mysql
nginx 文件:
upstream teampass {
server 127.0.0.1:8787;
}
upstream sqlteampass {
server 127.0.0.1:13306;
}
server {
listen 80;
server_tokens off;
server_name teampass.domain.tld;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_tokens off;
server_name teampass.domain.tld;
ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;
location / {
proxy_set_header Host $host:$server_port;
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;
proxy_pass http://teampass;
}
}
server {
listen 80;
server_tokens off;
server_name sql.teampass.domain.tld;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_tokens off;
server_name sql.teampass.domain.tld;
ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;
location / {
proxy_set_header Host $host:$server_port;
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;
proxy_pass http://sqlteampass;
}
}
最佳答案
首先确保容器之间的网络正常工作。
让我们从一个准系统的撰写文件开始,请注意,我现在省略了音量指令:
# docker-compose.yml
version: '2'
services:
teampass:
image: teampass/teampass
ports:
- "80:80"
links:
- db
db:
image: mysql:latest
ports:
- "3306:3306"
environment:
- MYSQL_DATABASE=teampass
- MYSQL_PASSWORD=pass
- MYSQL_ROOT_PASSWORD=rootpass
- MYSQL_USER=user
如果您的旧 teampass 容器仍在运行,请确保通过 docker-compose rm -v 删除旧容器!
现在运行docker-compose up
,一旦您看到 db 和 teampass 容器正在运行,您就可以验证 docker 容器是否可以互相看到:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
263d801cdf85 teampass/teampass "/bin/sh -c /start.sh" 14 minutes ago Up 14 minutes 0.0.0.0:80->80/tcp dockerteampass_teampass_1
fcb750fffd4f mysql:latest "docker-entrypoint.sh" 14 minutes ago Up 14 minutes 0.0.0.0:3306->3306/tcp dockerteampass_db_1
记下您正在运行的 teampass 容器的名称。
$ docker exec -it dockerteampass_teampass_1 bash
现在您位于 teampass 容器内。要 ping 数据库容器,只需执行
$ ping db
这不应该超时!
现在转到浏览器并开始设置,确保输入 db
作为主机!
这应该会消除您的上述错误。 完成此操作后,您可以尝试通过 nginx 进行反向代理。
要了解有关 docker 网络的更多信息,请参阅 documentation .
关于mysql - 使用正在运行的 nginx 代理在 docker 中运行 Teampass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40223814/