docker-compose up -d nginx mysql
でnginxとmysqlのサービスを起動しようとしたが、workspceとnginxだけが起動しなかった。
$ docker-compose ps -a
Name Command State Ports
---------------------------------------------------------------------------------------------------------
laradock_beanstalkd_1 /usr/bin/beanstalkd Up 0.0.0.0:11300->11300/tcp
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp
laradock_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3307->3306/tcp, 33060/tcp
laradock_nginx_1 /bin/bash /opt/startup.sh Exit 2
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
laradock_workspace_1 /sbin/my_init Exit 1
workspaceのエラー
docker-compose workspace logs
を実行し、ログを確認
以下のエラーが出ていた。
workspace_1 | Traceback (most recent call last):
workspace_1 | File "/sbin/my_init", line 417, in <module>
workspace_1 | main(args)
workspace_1 | File "/sbin/my_init", line 333, in main
workspace_1 | import_envvars(False, False)
workspace_1 | File "/sbin/my_init", line 90, in import_envvars
workspace_1 | for envfile in listdir("/etc/container_environment"):
workspace_1 | File "/sbin/my_init", line 74, in listdir
workspace_1 | return sorted(os.listdir(path))
workspace_1 | PermissionError: [Errno 13] Permission denied: '/etc/container_environment'
エラーをググったところ同じエラーで躓いている人を発見。
https://github.com/laradock/laradock/issues/1889
実行ユーザの権限の問題らしい。
workspaceのDockerfileを以下のように編集。
# Clean up
RUN apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
rm /var/log/lastlog /var/log/faillog
-USER laradock
+USER root
# Set default work directory
WORKDIR /var/www
nginxのエラー
docker-compose nginx logs
を実行し、ログを確認
以下のエラーが出ていた。
nginx_1 | /opt/startup.sh: line 2: $'\r': command not found
nginx_1 | /opt/startup.sh: line 10: syntax error: unexpected end of file
エラーをググったところまたまた同じエラーで躓いている人を発見。
https://github.com/laradock/laradock/issues/1878
「startup.sh」の改行コードをLFにする必要があるとのこと。自分のPCでは標準でCRLFになっていた。
「startup.sh」をサクラエディタなどで開き、以下の条件で置換。
置換前 \r\n
置換後 \n
docker-compose up --build nginx
で再度ビルド。
ビルド後、docker-compose up -d nginx mysql
でサービスを起動。
エラーなく起動していることが確認できる。
$ docker-compose ps -a
Name Command State Ports
---------------------------------------------------------------------------------------------------------------
laradock_beanstalkd_1 /usr/bin/beanstalkd Up 0.0.0.0:11300->11300/tcp
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp
laradock_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3307->3306/tcp, 33060/tcp
laradock_nginx_1 /bin/bash /opt/startup.sh Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp