在Docker中运行Teampass并运行nginx代理

@Moderators:你可以添加标签teampass到标签列表吗?

我想运行Teampass作为一个以nginx为代理的docker容器。

我不确定是否有问题,Teampass带来了自己的Apache,并对我的nginx工作,或者如果我还有其他的东西完全错误的话。

我这样input 在这里输入图像说明

问题是,它没有通过这个页面,因为连接到mySQL端口不工作。

当我尝试安装它,没有运行的nginx,一切都按预期工作。 但是当我使用nginx时,它不再运行

docker构成文件:

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; } } 

首先确保你的容器之间的networking正常工作。

让我们从准系统撰写文件开始,请注意,现在我已经离开了卷指令:

 # 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 

如果您仍然有旧的团队通道容器运行,请确保通过docker-compose rm -v清除旧的容器!

现在运行, docker-compose up ,一旦你看到db和teampass容器正在运行,你可以validationdocker容器可以看到对方:

 $ 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 

现在你在团队通道容器内。 要ping分贝容器,只需做

 $ ping db 

这不应该超时!

现在进入你的浏览器并开始安装,确保你inputdb作为主机!

这应该删除你的上述错误。 一旦你有这个工作 ,你可以尝试通过nginx反向代理。

在这里输入图像说明

要了解有关dockernetworking的更多信息,请参阅文档 。