我正在学习Docker,并且在尝试连接passenger-full
容器和mysql
容器上的Rails应用时出现问题。两者都在撰写文件链接Docker MySQL无法连接到套接字
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"
所以我加了apt-get install
我Dockerfile顶部这样
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/*
而且这是我database.yml
在Rails应用程序。
default: &default
adapter: mysql2
database: dockertest
host: <%= ENV['MYSQL_PORT_3306_TCP_ADDR'] %>
port: <%= ENV['MYSQL_PORT_3306_TCP_PORT'] %>
username: dockertest
password: dockertest
development:
<<: *default
production:
<<: *default
的问题是,我不能停止接收错误
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 run app rake db:migrate'运行成功,这意味着''rake'程序有'production'和'development'环境能够访问数据库容器。但是从客轨应用程序中,我仍然无法通过套接字'/var/run/mysqld/mysqld.sock'(2)'连接到本地MySQL服务器“。我添加了'/ etc/nginx/sites-enabled/webapp.conf'文件以获取更多详细信息,如果您有时间查看 – mariowise
那么,我更改'mysql:latest - > mysql:5.5'和'passenger-full - >乘客ruby21'和一切工作 – mariowise