質問編集履歴
8
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -226,10 +226,12 @@
|
|
226
226
|
|
227
227
|
ローカル
|
228
228
|
```
|
229
|
+
% mysql_config --socket
|
229
230
|
/tmp/mysql.sock
|
230
231
|
```
|
231
232
|
EC2
|
232
233
|
```
|
234
|
+
% mysql_config --socket
|
233
235
|
/var/lib/mysql/mysql.sock
|
234
236
|
```
|
235
237
|
そこで、database.ymlをこの様に変更しましたが、エラーは変わりませんでした。
|
7
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -222,7 +222,16 @@
|
|
222
222
|
```
|
223
223
|
mysql_config --socket
|
224
224
|
```
|
225
|
-
が、ローカルとEC2ターミナルでは違いました。
|
225
|
+
の結果が、ローカルとEC2ターミナルでは違いました。
|
226
|
+
|
227
|
+
ローカル
|
228
|
+
```
|
229
|
+
/tmp/mysql.sock
|
230
|
+
```
|
231
|
+
EC2
|
232
|
+
```
|
233
|
+
/var/lib/mysql/mysql.sock
|
234
|
+
```
|
226
235
|
そこで、database.ymlをこの様に変更しましたが、エラーは変わりませんでした。
|
227
236
|
```
|
228
237
|
# MySQL. Versions 5.1.10 and up are supported.
|
@@ -282,4 +291,15 @@
|
|
282
291
|
username: <%= ENV['DB_USERNAME'] %>
|
283
292
|
password: <%= ENV['DB_PASSWORD'] %>
|
284
293
|
socket: /var/lib/mysql/mysql.sock
|
294
|
+
```
|
295
|
+
|
296
|
+
```
|
297
|
+
ps ax | grep mysqld
|
298
|
+
```
|
299
|
+
の結果です。
|
300
|
+
```
|
301
|
+
9762 ? Ssl 0:01 mysqld
|
302
|
+
13734 pts/1 S+ 0:00 grep --color=auto mysqld
|
303
|
+
21504 ? S 0:00 /bin/sh /usr/libexec/mysql56/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
|
304
|
+
21718 ? Sl 0:14 /usr/libexec/mysql56/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql56/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
|
285
305
|
```
|
6
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -214,4 +214,72 @@
|
|
214
214
|
exit 0
|
215
215
|
fi
|
216
216
|
bundle exec cap production deploy unicorn:restart
|
217
|
+
```
|
218
|
+
|
219
|
+
|
220
|
+
追記です。
|
221
|
+
|
222
|
+
```
|
223
|
+
mysql_config --socket
|
224
|
+
```
|
225
|
+
が、ローカルとEC2ターミナルでは違いました。
|
226
|
+
そこで、database.ymlをこの様に変更しましたが、エラーは変わりませんでした。
|
227
|
+
```
|
228
|
+
# MySQL. Versions 5.1.10 and up are supported.
|
229
|
+
#
|
230
|
+
# Install the MySQL driver
|
231
|
+
# gem install mysql2
|
232
|
+
#
|
233
|
+
# Ensure the MySQL gem is defined in your Gemfile
|
234
|
+
# gem 'mysql2'
|
235
|
+
#
|
236
|
+
# And be sure to use new-style password hashing:
|
237
|
+
# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
|
238
|
+
#
|
239
|
+
default: &default
|
240
|
+
adapter: mysql2
|
241
|
+
encoding: utf8
|
242
|
+
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
243
|
+
username: root
|
244
|
+
password: password
|
245
|
+
host: db
|
246
|
+
socket: /tmp/mysql.sock
|
247
|
+
|
248
|
+
development:
|
249
|
+
<<: *default
|
250
|
+
database: LuggageMGT_development
|
251
|
+
|
252
|
+
# Warning: The database defined as "test" will be erased and
|
253
|
+
# re-generated from your development database when you run "rake".
|
254
|
+
# Do not set this db to the same as development or production.
|
255
|
+
test:
|
256
|
+
<<: *default
|
257
|
+
database: LuggageMGT_test
|
258
|
+
|
259
|
+
# As with config/secrets.yml, you never want to store sensitive information,
|
260
|
+
# like your database password, in your source code. If your source code is
|
261
|
+
# ever seen by anyone, they now have access to your database.
|
262
|
+
#
|
263
|
+
# Instead, provide the password as a unix environment variable when you boot
|
264
|
+
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
|
265
|
+
# for a full rundown on how to provide these environment variables in a
|
266
|
+
# production deployment.
|
267
|
+
#
|
268
|
+
# On Heroku and other platform providers, you may have a full connection URL
|
269
|
+
# available as an environment variable. For example:
|
270
|
+
#
|
271
|
+
# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
|
272
|
+
#
|
273
|
+
# You can use this database configuration with:
|
274
|
+
#
|
275
|
+
# production:
|
276
|
+
# url: <%= ENV['DATABASE_URL'] %>
|
277
|
+
#
|
278
|
+
production:
|
279
|
+
<<: *default
|
280
|
+
host: <%= ENV['DB_HOST'] %>
|
281
|
+
database: <%= ENV['DB_DATABASE'] %>
|
282
|
+
username: <%= ENV['DB_USERNAME'] %>
|
283
|
+
password: <%= ENV['DB_PASSWORD'] %>
|
284
|
+
socket: /var/lib/mysql/mysql.sock
|
217
285
|
```
|
5
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -48,6 +48,14 @@
|
|
48
48
|
|
49
49
|
という風になっており、dbに接続できていないことを確認できました。
|
50
50
|
|
51
|
+
host部分をdbにしたり、
|
52
|
+
compose.ymlのdbに
|
53
|
+
```
|
54
|
+
volumes:
|
55
|
+
- ./tmp/db:/var/lib/mysql/data
|
56
|
+
```
|
57
|
+
を追記してもエラーでした。
|
58
|
+
|
51
59
|
現状のエラーですが、
|
52
60
|
```
|
53
61
|
docker-compose run web rails db:create RAILS_ENV=production
|
4
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -71,7 +71,7 @@
|
|
71
71
|
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
72
72
|
username: root
|
73
73
|
password: password
|
74
|
-
host:
|
74
|
+
host: localhost
|
75
75
|
socket: /tmp/mysql.sock
|
76
76
|
|
77
77
|
development:
|
@@ -80,7 +80,7 @@
|
|
80
80
|
|
81
81
|
test:
|
82
82
|
<<: *default
|
83
|
-
host:
|
83
|
+
host: localhost
|
84
84
|
database: LuggageMGT_test
|
85
85
|
|
86
86
|
production:
|
@@ -89,6 +89,7 @@
|
|
89
89
|
database: <%= ENV['DB_DATABASE'] %>
|
90
90
|
username: root
|
91
91
|
password: <%= ENV['DATABASE_PASSWORD'] %>
|
92
|
+
socket: /var/lib/mysql/mysql.sock
|
92
93
|
```
|
93
94
|
|
94
95
|
docker-compose.yml
|
3
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,12 +7,20 @@
|
|
7
7
|
と入力したら、次の様なエラーが出てしまいました。
|
8
8
|
|
9
9
|
```
|
10
|
-
Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/var/
|
10
|
+
Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2 "No such file or directory")
|
11
11
|
```
|
12
12
|
|
13
|
+
#行ったこと
|
13
14
|
|
15
|
+
mysqlが起動していないと仮説を立て、
|
16
|
+
```
|
17
|
+
sudo service mysqld start
|
18
|
+
Starting mysqld: [ OK ]
|
19
|
+
```
|
20
|
+
となったが、エラーは変わりませんでした。
|
14
21
|
|
22
|
+
|
15
|
-
|
23
|
+
mysql.sockの場所が曖昧でしたので、
|
16
24
|
```
|
17
25
|
mysql_config --socket
|
18
26
|
```
|
@@ -20,14 +28,37 @@
|
|
20
28
|
```
|
21
29
|
/tmp/mysql.sock
|
22
30
|
```
|
23
|
-
と返ってきたのであわせてdatabaseを変更しましたが、エラーは変わらなかったです。
|
31
|
+
と返ってきたのであわせて下記の様にdatabaseを変更しましたが、エラーは変わらなかったです。
|
24
32
|
```
|
33
|
+
default: &default
|
34
|
+
adapter: mysql2
|
35
|
+
encoding: utf8
|
36
|
+
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
37
|
+
username: root
|
38
|
+
password: password
|
39
|
+
host: db
|
40
|
+
socket: /tmp/mysql.sock
|
41
|
+
```
|
42
|
+
|
43
|
+
|
44
|
+
次に、エラーログを確認したところ、
|
45
|
+
```
|
46
|
+
Unknown MySQL server host 'db' (25) (Mysql2::Error::ConnectionError)
|
47
|
+
```
|
48
|
+
|
49
|
+
という風になっており、dbに接続できていないことを確認できました。
|
50
|
+
|
51
|
+
現状のエラーですが、
|
52
|
+
```
|
25
53
|
docker-compose run web rails db:create RAILS_ENV=production
|
26
54
|
```
|
27
55
|
は通過するのですが、
|
56
|
+
|
57
|
+
|
28
|
-
``
|
58
|
+
```
|
29
59
|
docker-compose run web rails db:migrate RAILS_ENV=production
|
30
60
|
```
|
61
|
+
|
31
62
|
だけ通りません。
|
32
63
|
|
33
64
|
ご教授願います。
|
@@ -73,9 +104,6 @@
|
|
73
104
|
- db
|
74
105
|
tty: true
|
75
106
|
command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
|
76
|
-
environment:
|
77
|
-
RAILS_ENV: development
|
78
|
-
DATABASE_URL: mysql2://root:root@localhost:3306
|
79
107
|
volumes:
|
80
108
|
- .:/app_name
|
81
109
|
|
@@ -91,4 +119,90 @@
|
|
91
119
|
volumes:
|
92
120
|
bundle:
|
93
121
|
mysql_data:
|
122
|
+
```
|
123
|
+
|
124
|
+
dockerfile
|
125
|
+
```
|
126
|
+
FROM ruby:2.5.3
|
127
|
+
RUN apt-get update -qq && \
|
128
|
+
apt-get install -y build-essential \
|
129
|
+
libpq-dev \
|
130
|
+
nodejs
|
131
|
+
|
132
|
+
RUN mkdir /app_name
|
133
|
+
ENV APP_ROOT /app_name
|
134
|
+
WORKDIR $APP_ROOT
|
135
|
+
|
136
|
+
ADD ./Gemfile $APP_ROOT/Gemfile
|
137
|
+
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock
|
138
|
+
|
139
|
+
RUN bundle install
|
140
|
+
ADD . $APP_ROOT
|
141
|
+
```
|
142
|
+
|
143
|
+
(関係ないかもですが、)
|
144
|
+
circleci/config.yml
|
145
|
+
```
|
146
|
+
version: 2
|
147
|
+
jobs:
|
148
|
+
build:
|
149
|
+
docker:
|
150
|
+
- image: circleci/ruby:2.5.3-node-browsers
|
151
|
+
environment:
|
152
|
+
RAILS_ENV: 'test'
|
153
|
+
|
154
|
+
- image: circleci/mysql:5.6
|
155
|
+
environment:
|
156
|
+
MYSQL_ROOT_PASSWORD: "password"
|
157
|
+
MYSQL_ROOT_HOST: "%"
|
158
|
+
|
159
|
+
working_directory: ~/app_name
|
160
|
+
|
161
|
+
steps:
|
162
|
+
- checkout
|
163
|
+
- restore_cache: # キャッシュを読み込む
|
164
|
+
keys:
|
165
|
+
- gem-cache-v1-{{ checksum "Gemfile.lock" }}
|
166
|
+
- gem-cache-v1-
|
167
|
+
|
168
|
+
- run:
|
169
|
+
name: Bundle Install
|
170
|
+
command: bundle check --path vendor/bundle || bundle install --deployment
|
171
|
+
|
172
|
+
- save_cache: # キャッシュを保存する
|
173
|
+
key: gem-cache-v1-{{ checksum "Gemfile.lock" }}
|
174
|
+
paths:
|
175
|
+
- vendor/bundle
|
176
|
+
|
177
|
+
- run:
|
178
|
+
name: Wait for DB
|
179
|
+
command: dockerize -wait tcp://127.0.0.1:3306 -timeout 120s
|
180
|
+
- run: bundle exec rake db:create
|
181
|
+
- run: bundle exec rake db:schema:load
|
182
|
+
- run:
|
183
|
+
name: run tests
|
184
|
+
command: |
|
185
|
+
mkdir /tmp/test-results
|
186
|
+
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
|
187
|
+
bundle exec rspec --format progress \
|
188
|
+
--out /tmp/test-results/rspec.xml \
|
189
|
+
--format progress \
|
190
|
+
$TEST_FILES
|
191
|
+
- store_test_results:
|
192
|
+
path: /tmp/test-results
|
193
|
+
- store_artifacts:
|
194
|
+
path: /tmp/test-results
|
195
|
+
destination: test-results
|
196
|
+
|
197
|
+
- add_ssh_keys:
|
198
|
+
fingerprints:
|
199
|
+
- "1f:d5:4b:1c:ed:c1:92:6e:47:a1:e0:18:a0:ff:27:ca"
|
200
|
+
|
201
|
+
- deploy:
|
202
|
+
name: Capistrano deploy
|
203
|
+
command: |
|
204
|
+
if [ "${CIRCLE_BRANCH}" != "master" ]; then
|
205
|
+
exit 0
|
206
|
+
fi
|
207
|
+
bundle exec cap production deploy unicorn:restart
|
94
208
|
```
|
2
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,20 +1,17 @@
|
|
1
1
|
お世話になっております。
|
2
2
|
現在、個人アプリ制作で、railsとdocker,mysql,circleCIを用いて、本番環境の環境構築をしています。
|
3
3
|
|
4
|
-
初めはできていたのですが、色々といじっていたら、ローカルで次の様なエラーが出てしまいました。
|
5
|
-
|
6
4
|
```
|
7
|
-
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2 "No such file or directory")
|
8
|
-
|
5
|
+
docker-compose run web rails db:migrate RAILS_ENV=production
|
9
|
-
rails aborted!
|
10
6
|
```
|
7
|
+
と入力したら、次の様なエラーが出てしまいました。
|
11
8
|
|
12
|
-
本番環境では、下記のエラーです。
|
13
9
|
```
|
14
|
-
Mysql2::Error::ConnectionError: Can't connect to MySQL server
|
10
|
+
Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
|
15
11
|
```
|
16
12
|
|
17
13
|
|
14
|
+
|
18
15
|
まず、mysql.sockの場所が曖昧でしたので、
|
19
16
|
```
|
20
17
|
mysql_config --socket
|
@@ -24,10 +21,15 @@
|
|
24
21
|
/tmp/mysql.sock
|
25
22
|
```
|
26
23
|
と返ってきたのであわせてdatabaseを変更しましたが、エラーは変わらなかったです。
|
27
|
-
|
24
|
+
```
|
28
|
-
|
25
|
+
docker-compose run web rails db:create RAILS_ENV=production
|
26
|
+
```
|
27
|
+
は通過するのですが、
|
28
|
+
``
|
29
|
+
docker-compose run web rails db:migrate RAILS_ENV=production
|
30
|
+
```
|
31
|
+
だけ通りません。
|
29
32
|
|
30
|
-
|
31
33
|
ご教授願います。
|
32
34
|
|
33
35
|
database.yml
|
@@ -38,16 +40,16 @@
|
|
38
40
|
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
39
41
|
username: root
|
40
42
|
password: password
|
41
|
-
host:
|
43
|
+
host: db
|
42
44
|
socket: /tmp/mysql.sock
|
43
|
-
|
45
|
+
|
44
46
|
development:
|
45
47
|
<<: *default
|
46
48
|
database: LuggageMGT_development
|
47
49
|
|
48
50
|
test:
|
49
51
|
<<: *default
|
50
|
-
host:
|
52
|
+
host: db
|
51
53
|
database: LuggageMGT_test
|
52
54
|
|
53
55
|
production:
|
@@ -56,7 +58,6 @@
|
|
56
58
|
database: <%= ENV['DB_DATABASE'] %>
|
57
59
|
username: root
|
58
60
|
password: <%= ENV['DATABASE_PASSWORD'] %>
|
59
|
-
socket: /tmp/mysql.sock
|
60
61
|
```
|
61
62
|
|
62
63
|
docker-compose.yml
|
1
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
お世話になっております。
|
2
2
|
現在、個人アプリ制作で、railsとdocker,mysql,circleCIを用いて、本番環境の環境構築をしています。
|
3
3
|
|
4
|
-
初めはできていたのですが、色々といじっていたら、ローカル
|
4
|
+
初めはできていたのですが、色々といじっていたら、ローカルで次の様なエラーが出てしまいました。
|
5
5
|
|
6
6
|
```
|
7
7
|
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2 "No such file or directory")
|
@@ -9,6 +9,12 @@
|
|
9
9
|
rails aborted!
|
10
10
|
```
|
11
11
|
|
12
|
+
本番環境では、下記のエラーです。
|
13
|
+
```
|
14
|
+
Mysql2::Error::ConnectionError: Can't connect to MySQL server on '127.0.0.1' (111 "Connection refused")
|
15
|
+
```
|
16
|
+
|
17
|
+
|
12
18
|
まず、mysql.sockの場所が曖昧でしたので、
|
13
19
|
```
|
14
20
|
mysql_config --socket
|
@@ -19,7 +25,9 @@
|
|
19
25
|
```
|
20
26
|
と返ってきたのであわせてdatabaseを変更しましたが、エラーは変わらなかったです。
|
21
27
|
初学者ですが、丸々2日環境構築で苦戦してしまっています。
|
28
|
+
サイトで該当することは色々と試してみたのですが、結局元に戻ってきてしまいました...。
|
22
29
|
|
30
|
+
|
23
31
|
ご教授願います。
|
24
32
|
|
25
33
|
database.yml
|