LoginSignup
0
0

サービスのセッションを切らさずにDockerコンテナを立ち上げ直す方法

Posted at

EC2上にdockerでサービスを動かしていて、docker imageの中にソースコードを埋め込んでデプロイしていました。
その際に、デプロイ時にセッションが切れてしい毎回ログアウトされる問題があったので改善するようにしました。
言語はPHPを使っています。

解決方法

解決方法としては、EC2のローカル上にセッションを保存してdockerのbuild時にマウントさせることで解決しました。
セッションを保存したいローカルのディレクトリを /var/sessions 、マウント先のdockerコンテナのディレクトリはデフォルトでセッションが保存される var/lib/php/sessions とします。

予めローカルに/var/sessionsディレクトリを作ります。

$mkdir /var/sessions

次にdocker-compose.ymlファイルにマウントを書きます。

docker-compose.yml
volumes:
    - /var/sessions:/var/lib/php/sessions

こうすることで、ローカルの /var/sessions がdockerコンテナのvar/lib/php/sessions にマウント(コピーされるようなイメージ)されます。
そして、dockerコンテナのvar/lib/php/sessionsにセッションが保存されるとローカルの /var/sessionsにも同期されvar/lib/php/sessionsの中身と同じものができています。

セッションの確認

同じセッションが保存されているか確認してみましょう。
まずはdockerコンテナのvar/lib/php/sessionsにセッションが保存されているかを確認します。

$docker ps 
$docker exec -it [CONTAINER ID] /bin/bash
$ls var/lib/php/sessions

保存されていたら、次にdockerコンテナからexitしてローカルでセッションが保存されているか確認します。

$ls /var/sessions

同じセッションが保存されていたら成功です。

サービスに戻ってログイン機能があればログイン後、一度docker-compose downしてからdocker-compose upするとログインされたままになってると思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0