Alxen
本帖最后由 Alxen 于 2021-7-12 22:08 编辑

Docker-compose 如何在容器启动的同时开启服务器
尝试写过entrypoint总是在启动sh脚本时显示无法找到相对应文件无法启动容器
写在command里 容器会执行完命令后直接关闭(tty:true)的状态下
求解这是Bungee的写法(未写启动脚本)
  1. Bungee:
  2.   tty: true
  3.   image: openjdk:8u292-jre-slim-buster
  4.   container_name: "Bungee"
  5.   stdin_open: true
  6.   working_dir: /root/Servers/#25565#BungeeCord/
  7.   command:
  8.   - bash
  9.   ports:
  10.   - "25565:25565"
  11.   volumes:
  12.   - /root/Servers/#25565#BungeeCord/:/root/Servers/#25565#BungeeCord/
  13.   external_links:
  14.   - mysql
  15.   - AuthMe_1
  16.   - Lobby_1
  17.   - SheepWars_1
  18.   - SheepWars_2
复制代码




strings
就一般不都是一个容器运行一个服务吗

找不到文件可以试试在 sh 的最上面加一句
cd $(dirname $0)

Alxen
本帖最后由 Alxen 于 2021-7-12 22:00 编辑
もぺもぺ 发表于 2021-7-12 21:56
就一般不都是一个容器运行一个服务吗

找不到文件可以试试在 sh 的最上面加一句

运行cd指令docker会报错 我指定过woking-dir 直接运行sh 也不行

strings
Alxen 发表于 2021-7-12 21:58
直接sh 路径运行也不行

有什么显示吗,还有能让我看看,你是怎么写的吗。

Alxen
もぺもぺ 发表于 2021-7-12 21:59
有什么显示吗,还有能让我看看,你是怎么写的吗。

    Bungee:
        tty: true
        image: openjdk:8u292-jre-slim-buster
        container_name: "Bungee"
        stdin_open: true
        working_dir: /root/Servers/#25565#BungeeCord/
        command:
            - bash
        ports:
            - "25565:25565"
        volumes:
            - /root/Servers/#25565#BungeeCord/:/root/Servers/#25565#BungeeCord/
        external_links:
            - mysql
            - AuthMe_1
            - Lobby_1
            - SheepWars_1
            - SheepWars_2

Alxen
Alxen 发表于 2021-7-12 22:01
Bungee:
        tty: true
        image: openjdk:8u292-jre-slim-buster

这是目前没写启动脚本的

strings
Alxen 发表于 2021-7-12 22:01
这是目前没写启动脚本的

你应该先写 Dockerfile,然后 build 指定 Dockerfile 所在的文件夹。或者 image 指定编译后的镜像

你这样相当于用 docker 装 java

Alxen
もぺもぺ 发表于 2021-7-12 22:07
你应该先写 Dockerfile,然后 build 指定 Dockerfile 所在的文件夹。或者 image 指定编译后的镜像

你这 ...

Docker最大好处就是不要在宿主主机上安装什么东西直接用镜像,
希望有其他解决办法

strings
Alxen 发表于 2021-7-12 22:10
Docker最大好处就是不要在宿主主机上安装什么东西直接用镜像,
希望有其他解决办法 ...

对,但是是要写 Dockerfile 去继承,而不是直接用 openjdk:8u292-jre-slim-buster

Dockerfile 学一下也要不了你多久的时间https://yeasy.gitbook.io/docker_practice/image/build

不想的话,那个提示无法找到文件的提示是具体内容是什么

Alxen
もぺもぺ 发表于 2021-7-12 22:16
对,但是是要写 Dockerfile 去继承,而不是直接用 openjdk:8u292-jre-slim-buster

Dockerfile 学一下也要 ...

ERROR: for Bungee  Cannot start service Bungee: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "sh /root/Servers/#25565#BungeeCord/start.sh": executable file not found in $PATH: unknown
ERROR: Encountered errors while bringing up the project.

strings
Alxen 发表于 2021-7-12 22:24
ERROR: for Bungee  Cannot start service Bungee: OCI runtime create failed: container_linux.go:380: ...

找不到的是 sh 命令,因为 openjdk:8u292-jre-slim-buster 的底包里没有。

去用 openjdk:8-jre-alpine3.9

Alxen
もぺもぺ 发表于 2021-7-12 22:32
找不到的是 sh 命令,因为 openjdk:8u292-jre-slim-buster 的底包里没有。

去用 openjdk:8-jre-alpine3. ...

容器运行成功导致执行完命令后容器直接关闭

strings
Alxen 发表于 2021-7-12 23:15
容器运行成功导致执行完命令后容器直接关闭

执行的命令是什么

Alxen

没有按照你说的 sh找不到直接使用./start.sh 可运行 但是运行了直接容器关闭

Alxen
Alxen 发表于 2021-7-12 23:18
没有按照你说的 sh找不到直接使用./start.sh 可运行 但是运行了直接容器关闭 ...

容器创建成功
sh里写

  1. while true
  2. do
  3.     java -Xms1024M -Xmx2048M -jar -XX:ParallelGCThreads=1 BungeeCord.jar
  4.     echo "CTRL+C 停止"
  5.     for i in 5 4 3 2 1
  6.     do
  7.         echo "$i..."
  8.         sleep 1
  9.     done
  10.     echo "Done!"
  11. done
复制代码