安卓docker使用Alpine Term
Posted 老年痴呆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓docker使用Alpine Term相关的知识,希望对你有一定的参考价值。
幸运的是有人把Termux+Qemu+Alpine整合好了,名为alpine-term,开箱即用,安装一个apk打开就是配置完全的alpine linux。
下载安装APP并登录root(地址Github:https://github.com/FakeRajbhx/alpine-term/)
首先先下载alpine-term 578 MB
下载安装和安装后初始化开机都需要等一会儿,大约一分钟
开机后,登录系统,用户 alpine
密码: alpine
然后切换到root
账户,输入sudo -s
密码:alpine
如果想要修改root密码, 输入 passwd
,需要输入两次新密码。
开启root登录SSH
注意:请不要将app放在后台去复制以下代码,不然切换回来需要重新启动
系统默认是禁止ssh密码登录的,所以需要先开启她,输入:
sed -i \'s/PasswordAuthentication no/PasswordAuthentication yes/g\' /etc/ssh/sshd_config
如果还需要开机root用户登录的话,输入
sed -i \'s/PermitRootLogin no/PermitRootLogin yes/g\' /etc/ssh/sshd_config
然后重启启动sshd服务,输入
service sshd restart
重启完成就配置好了。
映射ssh的22端口
因为是Qemu套娃,所以需要映射ssh的22端口,开机完成后,手指在软件的左上方向右滑,会出现菜单,如下图所示:
![](https://it.cha138.com/file/image/no.jpg)
然后映射ssh的22端口到手机的2222端口,选择 [1]QEMU,输入
hostfwd_add tcp::2222-:22
回车
【注意】这个映射端口的命令每次重启Alpine Term 都需要重新设置一次!建议常驻后台,常驻后台内存占用和耗电量都很低。
执行上面的指令后就可以远程ssh手机的2222端口。接下来的操作也强烈建议在电脑上远程ssh操作,毕竟Ctrl C V特别方便。
配置APK源和DNS
因为Alpine默认的都是国外的源和DNS,所以这里都需要改成国内的
更换阿里云的源
sed -i \'s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g\' /etc/apk/repositories
更换阿里云+DNSPOD 的DNS
sed -i \'s/nameserver 185.120.22.15/nameserver 223.5.5.5/g\' /etc/resolv.conf
sed -i \'s/nameserver 94.16.114.254/nameserver 119.29.29.29/g\' /etc/resolv.conf
这样网络就正常可以使用了,接下来设置时区
setup-timezone
等到提示Which timezone are you in? (\'?\' for list) [UTC]
,然后输入
Asia/Shanghai
执行完成后,输入date
测试下时间。
启动Docker
更新软件包 :
apk update
apk upgrade
更新之后设置docker开机启动
rc-update add docker
然后启动docker
service docker start
启动的挺慢,稍等一分钟左右,然后试试docker version
,打印版本号则启动成功。
Docker内容器端口映射需要在QEMU
中输入 hostfwd_add tcp::安卓手机端口-:容器端口
(同理映射ssh的22端口)
alpine-term 高速下载链接
Docker:如何知道 mongo 是不是在 Alpine/node 中使用 shell 脚本文件运行
【中文标题】Docker:如何知道 mongo 是不是在 Alpine/node 中使用 shell 脚本文件运行【英文标题】:Docker : How to know if mongo is running using shell script file in Alpine/nodeDocker:如何知道 mongo 是否在 Alpine/node 中使用 shell 脚本文件运行 【发布时间】:2020-03-12 01:29:37 【问题描述】:我正在开发一个使用 docker 部署的 MEAN STACK 应用程序。 docker-compose.yml
文件包含两个服务,一个用于 Angular 和 express,另一个用于 mongoDB。
在 docker-compose.yml 文件中:
version: '2' # specify docker-compose version
# Define the services/containers to be run
services:
webapp: #name of the second service
build: ./ # specify the directory of the Dockerfile
volumes :
- ./dockerScripts:/temp/scripts
entrypoint:
- /temp/scripts/wait-for-service.sh
- 'localhost'
- '27018'
- 'npm run serve'
ports:
- "3000:3000" #specify ports forewarding
appdb: # name of the third service
image: mongo # specify image to build container from
command: mongod --port 27018
expose:
- 27018
ports:
- "27018:27018" # specify port forewarding
下面是dockerFile
的内容:
FROM mhart/alpine-node:10
MAINTAINER https://hub.docker.com/u/mhart/
RUN apk update && \
apk add git && \
apk add --no-cache python build-base && \
apk add busybox-extras && \
apk --no-cache add procps
#RUN apk add --no-cache python build-base
RUN mkdir -p /usr/src/
WORKDIR /usr/src/
COPY package.json .
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
在执行 webapp 命令之前,我需要检查 mongodb 是否在指定端口上启动。
为了实现这一点,我编写了一个如下的 shell 脚本文件:
set -e
host="$1"
port="$2"
svc="$3"
echo `Inspectingggggg ` $host $port
until `telnet $host $port`; do
# until `ps -ax`; do
>&2 echo "Service is unavailable - going to sleeping "
sleep 5
done
>&2 echo "Service is now up, will execute npm run " $svc
npm run $svc
**
我面临的问题是如何检查mongodb服务是否启动 在执行 webapp 服务之前?
**
使用 telnet 命令我总是收到以下错误:
telnet: can't connect to remote host (127.0.0.1): Connection refused
templatexapp_1 | Service is unavailable - going to sleeping
【问题讨论】:
【参考方案1】:在depends_on
中定义您的相互依赖关系,以依赖顺序启动服务。这消除了一个 shell 脚本来检查 mongo
是否正在运行。所以你可以简单地拥有这个docker-compose.yml
文件:
version: '2' # specify docker-compose version
# Define the services/containers to be run
services:
webapp: #name of the second service
build: ./ # specify the directory of the Dockerfile
volumes :
- ./dockerScripts:/temp/scripts
depends_on:
- appdb
command: npm run serve
ports:
- "3000:3000" #specify ports forewarding
appdb: # name of the third service
image: mongo # specify image to build container from
command: mongod --port 27018
expose:
- 27018
ports:
- "27018:27018" # specify port forewarding
注意webapp
服务中的这个部分:
depends_on:
- appdb
这确保appdb
将在webapp
之前启动。
【讨论】:
会不会也保证webapp
启动前端口是开放的?即,不只是跑步,而是准备好了吗?以上是关于安卓docker使用Alpine Term的主要内容,如果未能解决你的问题,请参考以下文章
「容器架构」Debian和 Alpine作为基准Docker映像的对比
Docker:如何知道 mongo 是不是在 Alpine/node 中使用 shell 脚本文件运行
docker build 时 alpine 无法安装软件问题的解决