我正在學習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