问题描述
我正在用这个 github 学习 docker-compose。
https://github.com/lusehair/42inception.git
(在 Ubuntu 下运行良好,需要运行时请在 Ubuntu 下运行!)
首先,它运行良好。
但是,如果我编辑页面并重新启动,则会出现错误。
(在其他终端中docker-compose down
,sudo systemctl stop MysqL
关闭MysqL。)
:我认为 sudo systemctl stop MysqL
可以停止我的 mariadb 服务。但如果没有,请在评论中告诉我。
srcs_mariadb_1 exited with code 1
srcs_mariadb_1 exited with code 1
srcs_mariadb_1 exited with code 1
srcs_mariadb_1 exited with code 1
...
我认为这是因为 ~/data/
文件夹没有删除好。
但我不想删除数据文件夹。
如果我重新启动 docker-compose,甚至 Ubuntu,我想保持 wp 更改!
编辑:评论中的内容
问:为什么我只能在 Ubuntu 中运行我的 docker-compose 程序?
答:我知道仅在 Ubuntu 操作系统中启动 docker 是逻辑问题。但我这样说是因为两个原因。首先,我的一些命令应该在 linux os 中启动。其次,我的主题要求我在虚拟机中启动我的 docker-compose 项目。我为此选择了 Ubuntu。
我还尝试更具体地调试,如下所示。
开始之前(基本):
: 在根目录下运行 make
。
它会清理 docker 和数据文件夹、设置和构建。
-
docker-compose up mariadb
恐怕为什么这行得通...
kkim@kkim-VirtualBox:~/inception/lusehair/srcs$ docker-compose up mariadb
Creating network "srcs_vpcbr" with driver "bridge"
Creating srcs_mariadb_1 ... done
Attaching to srcs_mariadb_1
mariadb_1 | 2021-06-27 17:18:52 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
kkim@kkim-VirtualBox:~/inception/lusehair/srcs$
-
docker-compose up wordpress
我在docker-compose up mariadb
成功后尝试过。
这给了我问题。
这与其他错误不同。
它不断尝试连接几分钟。我几乎在 10 分钟后停止了此操作。
kkim@kkim-VirtualBox:~/inception/lusehair/srcs$ docker-compose up wordpress
srcs_mariadb_1 is up-to-date
Creating srcs_wordpress_1 ... done
Attaching to srcs_wordpress_1
^CGracefully stopping... (press Ctrl+C again to force)
Stopping srcs_wordpress_1 ... done
kkim@kkim-VirtualBox:~/inception/lusehair/srcs$ docker-compose up mariadb wordpress
srcs_mariadb_1 is up-to-date
Starting srcs_wordpress_1 ... done
Attaching to srcs_mariadb_1,srcs_wordpress_1
mariadb_1 | 2021-06-27 17:18:52 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1 | 2021-06-27 17:18:56 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1 | 2021-06-27 17:18:59 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 9 ...
mariadb_1 | 2021-06-27 17:19:02 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 9 ...
mariadb_1 | 2021-06-27 17:19:06 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1 | 2021-06-27 17:19:11 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1 | 2021-06-27 17:19:17 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 7 ...
mariadb_1 | 2021-06-27 17:19:26 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 9 ...
mariadb_1 | 2021-06-27 17:19:41 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1 | 2021-06-27 17:20:10 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 9 ...
mariadb_1 | 2021-06-27 17:21:04 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 9 ...
mariadb_1 | 2021-06-27 17:22:06 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1 | 2021-06-27 17:23:09 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1 | 2021-06-27 17:24:12 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 7 ...
mariadb_1 | 2021-06-27 17:25:15 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
mariadb_1 | 2021-06-27 17:26:18 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 8 ...
srcs_mariadb_1 exited with code 1
mariadb_1 | 2021-06-27 17:28:24 0 [Note] MysqLd (MysqLd 10.3.29-MariaDB-0+deb10u1) starting as process 7 ...
^CGracefully stopping... (press Ctrl+C again to force)
Stopping srcs_wordpress_1 ... done
Stopping srcs_mariadb_1 ... done
感谢您阅读至此。
我已连接到 git 存储库的所有者,但它在他的 ubuntu 中运行良好。
我会尝试重新安装我的操作系统并在这个问题中写道。
如果我误解了什么,请告诉我!!!
我想我是,但我不知道重点。
这是 docker-compose.yml。
它仅使用本地图像(Dockerfile)。
# docker-compose.yml
version: '3'
services:
mariadb:
image: mariadb:inc
volumes:
- ~/data/maria:/var/lib/MysqL
restart: always
environment:
MARIA_LOGIN: "${MARIA_LOGIN}"
MARIA_PASS: "${MARIA_PASS}"
ports:
- "3306:3306"
build:
context: ./requirements/mariadb
dockerfile: Dockerfile
networks:
vpcbr:
env_file: .env
wordpress:
depends_on:
- mariadb
image: wordpress:inc
volumes:
- ~/data/wp:/var/www/wordpress
restart: always
environment:
WP_LOGIN: "${WP_LOGIN}"
WP_PASS: "${WP_PASS}"
WPU_1LOGIN: "${WPU_1LOGIN}"
WPU_1PASS: "${WPU_1PASS}"
MARIA_LOGIN: "${MARIA_LOGIN}"
MARIA_PASS: "${MARIA_PASS}"
ports:
- "9000:9000"
build:
context: ./requirements/wordpress
dockerfile: Dockerfile
networks:
vpcbr:
env_file: .env
Nginx:
image: Nginx:inc
restart: always
depends_on:
- wordpress
ports:
- "443:443"
volumes:
- ~/data/wp:/var/www/wordpress
build:
context: ./requirements/Nginx
dockerfile: Dockerfile
networks:
vpcbr:
extra_hosts:
- "lusehair.42.fr:127.0.0.1"
env_file: .env
networks:
vpcbr:
driver: bridge
这是 Mariadb 的 Dockerfile,setup.sh。
你可以在github中看到所有的项目文件。
FROM debian:buster
MAINTAINER lusehair <lusehair@42.student.fr>
RUN apt-get update
RUN apt-get install -y mariadb-server vim procps;
copY tools/setup.sh .
RUN chmod +x setup.sh
EXPOSE 3306
RUN rm /etc/MysqL/mariadb.conf.d/50-server.cnf
# Swith off the bind address
copY tools/50-server.cnf /etc/MysqL/mariadb.conf.d
ENTRYPOINT ["sh","/setup.sh"]
if [ ! -d "/var/lib/MysqL/wordpress" ]; then
MysqL_install_db
service MysqL start
MysqL -e "CREATE USER '${MARIA_LOGIN}'@'localhost' identified by '${MARIA_PASS}';" &&\
MysqL -e "CREATE DATABASE IF NOT EXISTS wordpress;" &&\
MysqL -e "GRANT ALL PRIVILEGES ON *.* TO '${MARIA_LOGIN}'@'%' IDENTIFIED BY '${MARIA_PASS}';" &&\
MysqL -e "FLUSH PRIVILEGES;"
service MysqL stop
fi
#sleep 5
MysqLd
解决方法
您不需要公开 3306 端口。
您的 setup.sh
创建了一个与其授予权限的用户不同的用户。容器不适合运行服务。
最好使用官方图片。
version: '3'
services:
mariadb:
image: mariadb:10.5.11
volumes:
- ~/data/maria:/var/lib/mysql
restart: always
environment:
MARIADB_USER: "${MARIA_LOGIN}"
MARIADB_PASSWORD: "${MARIA_PASS}"
MARIADB_DATABASE: wordpress
但是不要犯那么多错误/学习的东西:-)
从您的存储库中,您似乎也解决了其余问题(包括官方图片 wordpress)。