ducker mysql连接不上_Docker MySQL无法连接到socket

我正在学习Docker,我在尝试连接乘客满容器和mysql容器上的Rails应用程序时遇到了问题.两者都在撰写文件中链接

app:

build: ./rails

ports:

- "80:80"

links:

- database

volumes:

- ./rails:/home/app/webapp

database:

image: mysql

environment:

- MYSQL_DATABASE="dockertest"

- MYSQL_USER="dockertest"

- MYSQL_PASSWORD="dockertest"

- MYSQL_ROOT_PASSWORD="root"

所以我在我的Dockerfile顶部添加了apt-get install

FROM phusion/passenger-full

RUN apt-get update && apt-get install libmysqlclient-dev mysql-client -y

# Set correct environment variables.

ENV HOME /root

# Use baseimage-docker's init process.

CMD ["/sbin/my_init"]

RUN rm -f /etc/service/nginx/down

RUN rm /etc/nginx/sites-enabled/default

ADD webapp.conf /etc/nginx/sites-enabled/webapp.conf

RUN mkdir /home/app/webapp

WORKDIR /home/app/webapp

ADD . /home/app/webapp

RUN cd /home/app/webapp && bundle install

RUN touch /home/app/webapp/tmp/restart.txt

# Clean up APT when done.

RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

这也是我在Rails应用程序中的database.yml.

default: &default

adapter: mysql2

database: dockertest

host:

port:

username: dockertest

password: dockertest

development:

<<:>

production:

<<:>

问题是我无法停止接收错误

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

webconf文件是

# /etc/nginx/sites-enabled/webapp.conf:

server {

listen 80;

server_name localhost;

root /home/app/webapp/public;

passenger_enabled on;

passenger_user app;

passenger_ruby /usr/bin/ruby2.2;

}

这是正确的方法吗?你可以看到我对码头工作者来说很新.

解决方法:

这里的问题是你的docker-compose.yml文件中的links指令.你有:

links:

- database

根据docker-compose.yml reference,这基本上是说链接名称:别名是database:database.

此外,如果您阅读linking container docs,则可以看到导出到源容器的环境的格式为ALIAS_XXX,例如ALIAS_PORT_3306_TCP_PORT.所以在你的database.yml中本质上你想要做的是这样的:

default: &default

adapter: mysql2

database: dockertest

host:

port:

username: dockertest

password: dockertest

development:

<<:>

production:

<<:>

如果你想使用MYSQL别名,你的链接必须在你的docker-compose.yml文件中看起来像这样.

links:

- database:mysql

错误:

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

基本上来自你的Rails应用程序不是要查看database.yml中的内容并默认为本地/var/run/mysqld/mysqld.sock连接.

希望能帮助到你.

标签:nginx,docker,mysql,ruby-on-rails,passenger

来源: https://codeday.me/bug/20190623/1271457.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值